クラスに参照データ メンバーが必要ですが、コンストラクターで初期化したくありません。
どうすればこれを行うことができますか?
それは不可能です。ctor 初期化リスト内で参照データ メンバーを初期化する必要があります。本当にこのようなことをしなければならない場合は、参照の代わりにデータ メンバーへのポインターを使用してください。ctor へのポインタを初期NULL
化し、必要なときにいつでも正しく初期化します。
それは参照変数の属性であるため、コンストラクターで初期化する必要があります(初期化リストを介してのみ)(参照を初期化する必要があります)。
デフォルトのパラメーターで初期化したままにすることで、静的/グローバル変数に初期化できます。
YourClass::YourClass(int& ref = _SomeGlobalVar) : m_RefInClass(ref){}
ただし、それ以上再初期化することはできません。
前述のように、参照がどこかに必要な場合、これはよくない考えです。通常、その理由には確固たる理由があります。
ただし、実行していることに特定の理由がある場合は、Null Object Patterns を参照してください。
ある種の「実装されていない」例外をスローするか、まったく何もしない null オブジェクトを作成できます。初期化子リストでメンバー変数を初期化する必要がありますが、少なくとも将来変更を加える柔軟性があります。