オブジェクト指向言語初心者のものです。
クラスA
クラスB
とあり、クラスAの中でクラスBのインスタンスを生成します。
クラスAはクラスBのメソッドなどを使用する事ができますが、
クラスBがクラスAのメンバ変数の値を直接参照したい場合はどのようにしたらよいので
しょうか??
もしくはクラスBがクラスAのメソッドを参照することなんてできるのでしょうか??
class CClassB{
Long CheckData();
}
class CClassA{
int nData1;
int nData2;
void CreateB(CLassB ClassB)
}
クラスBがコンストラクタなり何なりでAのポインタを受け取れば可能でしょう。
なるほど。回答ありがとうございます。
ちなみにAがスーパークラスA’を継承しているクラスのインスタンスの一つで、
クラスA’を継承しているすべてのクラスにてクラスBを生成します。
クラスBのコンストラクタにはスーパークラスにキャストしたAのアドレスを渡せばいい
のでしょうか??
目的が何であるかによります。
BのコンストラクタにA'ポインタを渡した場合、一般に、Bの中ではA'のメンバにしかアク
セスできません(いくつかあるA'の派生クラスのどれであるかはわかりません)。
それでもよいのであれば、A'を渡せばいいでしょう。
ダメなのであれば、何か策を講じる必要があるでしょう。
的確な回答ありがとうございました。
最後に
ClassAのなんらかのメソッド内でクラスBを生成し、のコンストラクタ引数としてAのア
ドレスを渡すには具体的にどうしたらよいのでしょうか?
単純に
ClassB B(this)とやったらコンパイルエラーになってしまいました。
(この場合thisって const class B&なんですね・・・)
ありがとうございます!
相互参照ができる事がわかりました。
12153