2011-01-19 5 views
0

は私の問題だ:1クラスから作成された「隣人」クラスへのアクセスは可能ですか?ここ

私は2つの他のクラスの二つの新しいインスタンスを作成し、1クラスを持って、そして今、私は他のインスタンスのいずれかから直接利用可能性を持っているいずれかの必要があるだろう、これが可能とあればありますだから、どう?

ので:

b = new B(5); // where 5 is an int data member of B 
c = new C(); 

とlet B ::蜂()私はのメンバーにアクセスする必要があるだろう、私はC()からアクセスする必要がある関数であるしかし:クラスAで

Bによって作成されたB(Bの新しいインスタンスではありません)。

So C::getIntfromB(){ 
    b->getInt(); 
} 

または何か。

私が行く試みた:C

ためB b;プライベート部材を有する

b = new B(5); 
c = new C(*b); 

は、しかし、私は単にそれが正常に動作しない場合は、何らかの理由で、私が作っています明白な誤りは何ですか?

+0

問題のあるコードを投稿 – YeenFei

答えて

0

お客様のCメンバーは、ポインタまたは参照(B *bまたはB &b)である必要があります。 Bの場合はBオブジェクトがコピーされるため、別のインスタンス(対象となるインスタンスをコピーして作成されたインスタンス)を参照します。

また、bオブジェクトをポインタまたは参照として渡す必要があります。そうしないと、パラメータを渡している間に新しいインスタンスが作成され、Cクラスのポインタ/参照はそのオブジェクトを参照します。 (そのようなコピーは次のようになりますので、これはまた、他の問題につながる一時的Cのコンストラクターが戻るとすぐに破壊されたばかり)

0

主な理由オブジェクトBから正しいデータにアクセスすることはできませんあなたのオブジェクトCCは、既存のピアオブジェクトBを参照する代わりに、オブジェクトB 'の独自のコピーを持っているためです。

関連する問題