以下のようなことは可能ですか?
その方法を教えてください。
class A
{
public:
A(){};
};
class B
{
public:
B(){};// ここでえらー
void Init(A &c){aaa = c;};// ここでえらー
A &aaa;
};
void func()
{
A aa;
B bb;
bb.Init(aa);
}
aaの内容をbbのaaに同じものを渡して
中身は共有したいので参照したいのですが
C2758: 'aaa' : オブジェクト コンストラクタの初期化リストで初期化されませんでした。
と、えらーになります。
> void Init(A &c){aaa = c;};// ここでえらー
A a1, a2;
a1 = a2;
が出来ないからでしょう
# エラーぐらいカタカナに変換してもらいたいものです。
B::aaaは参照型ですから,初期化しなければなりません。
ところが,Bのコンストラクタでは初期化されていませんから,エラーがでます。
というわけで,ちゃんと初期化するか,ポインタを使いましょう。
「以下のようなこと」ってなに?
「B が A& をメンバとして持ちたい」 ってことですか?
ならばBのコンストラクタがメンバであるA&を初期化できなくてはなりません。
それさえすれば可能です。
# てゆっか、'参照体'を理解してますか?
ヴぉけてました。orz
> A a1, a2;
> a1 = a2;
(コピー)じゃなくて
A a1;
A &a2 = a1, &a3; // ここでエラー
a3 = a2;
でしたね。
ぽいんたを使うことにしました。
ありたとうございました。