2012-03-22 19 views
0

コンストラクタで初期化せずに参照をメンバ変数として使用する方法はありますか? 私の問題は、オブジェクトを構築するときに参考にしていないことです。初期化のないクラスメンバー変数としての参照

+1

あなたがしたいことを示してください。コンストラクタ内ですべての初期化を実行する必要はないかもしれませんが、必要なときに何かを怠惰にすることができます。 –

+0

手元への参照をした後にオブジェクトを構築できますか? –

答えて

2

> Is there a way to use a reference as a member variable without initialising it in the constructor?

いいえ、参照が

> My problem is that I don't have the reference at hand when constructing the object.

コンストラクタ初期化子リストで初期化する必要があります私はあなたが何を意味するかと思いますが参照するオブジェクトを持っていないです。その場合は、ポインタを取得してNULLに初期化する必要があります。その後、オブジェクトを持っているときにポインタがそれを指すようにします。この場合、NULLへの参照を初期化できないため、参照は使用できません。

4

いいえ。参照は作成時に初期化する必要があります。以降は変更できません。標準は、

を示します。有効なオブジェクトまたは 機能を参照するようにリファレンスを初期化する必要があります。

ターゲットオブジェクトを構築中でない場合は、参照の代わりにポインタを使用して切り替えます。

0

参照が初期化されると、その参照は同じエンティティを指すようになります。それを「再配置」しようとすると、未定義の動作になります。

簡単な答え:初期化できない場合は使用できません。

関連する問題