クラスの 1 つに対してコンストラクターが呼び出されると、奇妙なエラーが発生します。基本的に、私がやっていることはこれです:
タイプ「B」、「C」の2つのメンバー変数を持つクラス「A」があります。「C」は、タイプ「B」のメンバーで開始する必要があります。したがって、コンストラクターは次のようにする必要があります。
A::A():
c(b)
{}
クラスが次のようにレイアウトされている場合、これは正常に機能します。
class A
{
B b;
C c;
}
ただし、クラスが次のようにレイアウトされている場合はクラッシュします。
class A
{
C c;
B b;
}
私の最初の推測では、コンストラクターで c(b) を初期化する場合、もちろん c の前に b を作成する必要があります。これが正しいかどうかはわかりませんが。メンバー変数が割り当てられる前にコンストラクターが呼び出されますか? または、コンストラクターで参照されるメンバー変数が最初に割り当てられ、次に残りの参照されていないメンバー変数がコンストラクターの最後に割り当てられますか (たとえば、コンストラクターで参照されない別のメンバー変数 "C c2" があった場合など)?
私はVisual Studio 2010を使用しています。