No.1
- 回答日時:
> クラスの中にクラスというのは実現可能なのでしょうか?
可能です。
> またクラスAに宣言されている変数をクラスB,Cの中で変更したりできないでしょうか?
メンバ変数をpublicにするか、クラスBおよびCをfriendにする必要があります。
この回答への補足
回答ありがとうございます。
一応組んでみたものです。
class ClassB{
public:
void testB();
};
class ClassA{
public:
int x;
ClassB Bclass;
void testA();
};
void ClassA::testA(){
Bclass.testB();
}
void ClassB::testB(){
x=0; //ここで呼び出せない
}
このような状態の場合xを変更するにはどうすればよいのでしょうか?
No.2
- 回答日時:
> class ClassA{
> public:
> int x;
> ClassB Bclass;
> void testA();
> };
これはクラスの中にクラスがあるのではなく、クラスの中にクラス型のデータメンバがある例です。したがって、まったく話が異なります。
> このような状態の場合xを変更するにはどうすればよいのでしょうか?
今回の例に限れば、ClassAはC互換構造体のようですので、thisからoffsetof(ClassA, Bclass)バイト分を引いてからClassA*にキャストすれば、とりあえずxにアクセスすることはできます。
ただし、ClassAのメンバではなくClassBには対応できません。
現実的な解決策としては、ClassBのコンストラクタでClassAへの参照なりポインタなりを受け取り、それをデータメンバとして保持するのが妥当です。
しかし、このような密な関係のクラスではなく、もっと別の解決策があるように思います。それについては、こんな簡単な例ではなく、実際に何をやりたいのかがわからないとどうしようもありません。
この回答への補足
クラスの中にクラス型のデータメンバを追加するだけではやはり無理ですか
ポインタを使う方法なら確かに私の言っていたことが実現できそうですが、やはり解決策としては適当ではないようですね
今作ろうとしているのですが流れでは
while(1){
クラスA.Loop();
以降その他処理
}
このような状態になっています。
クラスAではLoop以外にほかの処理の関数もがあります。
class ClassA{
public:
void testA();
void testB();
void Loop();
};
void ClassA::Loop()
{
testA();
testB();
}
となっていました。
この状況ではクラス内で関数が大量にでき不自然さを感じ
クラスの中でもうひとつ階層を作りそこで関数を作ろうと考えました。
void ClassA::Loop()
{
a.testA();
b.testB();
}
このような感じに使いたかったのですが。
他の方法を考えてみたいと思います。ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 学校 中2女子不登校です。中2の5月辺りからクラス替えの変化で1年の頃からのストレスによる頭痛が悪化し、体 2 2022/03/23 17:16
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- 高校 クラス一位に戻りたいのですが、 4 2023/06/11 17:41
- 学校 うちの学校では1.2.3と3つのクラスがあり数学の授業の際はAクラスとBクラスに分かれるのですがプリ 1 2022/06/23 19:19
- 中学校 終わった…。 中2です。いろいろと終わりました…。 1つ目が塾…。私の塾では学校のテスト前(中間テス 10 2022/05/24 17:55
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オブジェクト指向プログラミン...
-
配列の重複する値とその個数を...
-
コンボボックスのマウスホイー...
-
java eclipse 型に解決できません
-
グローバルIPとプライベートIP...
-
重複エラーを解決するには
-
main()を持つクラスが2つ以上...
-
河合塾のクラス分けについて
-
複数のクラスで共通した関数を...
-
EclipseでJSPのコンパイルエラー
-
ATLとMFCの違いは何でしょうか?
-
Eclipseでのクラス作成について
-
同一パッケージにあるクラスが...
-
Javaでの構造体の構造体のクラ...
-
Android/コンポーネントとクラ...
-
自作のクラスファイルがインポ...
-
中学2年です‼︎ 明日.学級の級長...
-
「天声人語」をインターネット...
-
エクセルVBAでのwitheventsにつ...
-
クラスの衝突
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
河合塾のクラス分けについて
-
同じクラスにならない確率を教...
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
同一パッケージにあるクラスが...
-
私はクラスLINEにまだ入れてな...
-
老い先短い ジジィ が ふと 思う...
-
自作のクラスファイルがインポ...
-
どこからも呼ばれていない無意...
-
main()を持つクラスが2つ以上...
-
数学の計算問題。 3年間同じク...
-
クラス見てから 女の子5人 ネタ...
-
javaのコンパイルができません...
-
1 つのヘッダファイルに複数の...
-
重複エラーを解決するには
-
IPアドレスの3バイト目の呼び方
-
packageとimport の違いって?
おすすめ情報