生成元のクラスのメンバ変数を参照したい。 – プログラミング – Home

生成元のクラスのメンバ変数を参照したい...
 
通知
すべてクリア

[解決済] 生成元のクラスのメンバ変数を参照したい。


ももちゃん
 ももちゃん
(@ももちゃん)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

オブジェクト指向言語初心者のものです。

クラスA
クラスB

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

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

class CClassB{
 Long CheckData();
}

class CClassA{

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


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

クラスBがコンストラクタなり何なりでAのポインタを受け取れば可能でしょう。


返信引用
ももちゃん
 ももちゃん
(@ももちゃん)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

なるほど。回答ありがとうございます。
ちなみにAがスーパークラスA’を継承しているクラスのインスタンスの一つで、
クラスA’を継承しているすべてのクラスにてクラスBを生成します。

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


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

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


返信引用
ももちゃん
 ももちゃん
(@ももちゃん)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

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

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


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

参考にどうぞ。
http://archive.mag2.com/0000251805/20080129090000000.html


返信引用
ももちゃん
 ももちゃん
(@ももちゃん)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

ありがとうございます!
相互参照ができる事がわかりました。


返信引用
アイシールド21
 アイシールド21
(@アイシールド21)
ゲスト
結合: 17年前
投稿: 1
 

12153


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました