重複した質問ではないと思います。似たような質問はありますが、私の問題解決には役立ちません。
によるとこれC++ では次のコードが有効です。
class c {
public:
int& i;
};
ただし、これを実行すると、次のエラーが発生します。
error: uninitialized reference member 'c::i'
i=0
構築時に正常に初期化するにはどうすればよいですか?
どうもありがとう。
ベストアンサー1
「空の参照」というものは存在しません。持っているオブジェクトの初期化時に参照を提供します。コンストラクタの基本初期化リストに置きます。
class c
{
public:
c(int & a) : i(a) { }
int & i;
};
代替案としては がありますi(*new int)
が、それはひどいことになります。
編集:おそらくあなたの質問に答えるためには、i
参照ではなくメンバー オブジェクトになりたいだけなので、 とだけ言ってint i;
、コンストラクターを または として記述しc() : i(0) {}
ますc(int a = 0) : i(a) { }
。