コンストラクタ内の参照の初期化 C++ 質問する

コンストラクタ内の参照の初期化 C++ 質問する

重複した質問ではないと思います。似たような質問はありますが、私の問題解決には役立ちません。

によるとこれ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) { }

おすすめ記事