生成元のクラスのメンバ変数を参照したい。

[戻る]
ももちゃん 2008/02/19(火) 14:39:46
オブジェクト指向言語初心者のものです。

クラスA
クラスB

とあり、クラスAの中でクラスBのインスタンスを生成します。

クラスAはクラスBのメソッドなどを使用する事ができますが、
クラスBがクラスAのメンバ変数の値を直接参照したい場合はどのようにしたらよいので
しょうか??
もしくはクラスBがクラスAのメソッドを参照することなんてできるのでしょうか??



class CClassB{
 Long CheckData();
}

class CClassA{

  int nData1;
  int nData2;
  void CreateB(CLassB ClassB)
}

シャノン 2008/02/19(火) 14:42:19
クラスBがコンストラクタなり何なりでAのポインタを受け取れば可能でしょう。

ももちゃん 2008/02/19(火) 14:52:53
なるほど。回答ありがとうございます。
ちなみにAがスーパークラスA’を継承しているクラスのインスタンスの一つで、
クラスA’を継承しているすべてのクラスにてクラスBを生成します。

クラスBのコンストラクタにはスーパークラスにキャストしたAのアドレスを渡せばいい
のでしょうか??

シャノン 2008/02/19(火) 15:03:10
目的が何であるかによります。
BのコンストラクタにA'ポインタを渡した場合、一般に、Bの中ではA'のメンバにしかアク
セスできません(いくつかあるA'の派生クラスのどれであるかはわかりません)。
それでもよいのであれば、A'を渡せばいいでしょう。
ダメなのであれば、何か策を講じる必要があるでしょう。

ももちゃん 2008/02/19(火) 15:25:22
的確な回答ありがとうございました。
最後に
ClassAのなんらかのメソッド内でクラスBを生成し、のコンストラクタ引数としてAのア
ドレスを渡すには具体的にどうしたらよいのでしょうか?

単純に
ClassB B(this)とやったらコンパイルエラーになってしまいました。
(この場合thisって const class B&なんですね・・・)

Blue 2008/02/19(火) 15:48:29
参考にどうぞ。
http://archive.mag2.com/0000251805/20080129090000000.html

ももちゃん 2008/02/19(火) 21:06:01
[[解決]]
ありがとうございます!
相互参照ができる事がわかりました。

アイシールド21 2008/02/21(木) 09:05:23
12153

古いスレッドには追加発言できません。