C#では簡単ですが、C ++(ネイティブ、Win32、Visual C ++)では解決策がわかりません。したがって、重要なコンストラクターを持つクラスMyClass1があり、MyClass2にはタイプMyClass1の静的メンバーが必要です。
MyClass1.h:
class MyClass1
{
public MyClass1(type1 arg1, type2 arg2);
}
MyClass2.h:
class MyClass2
{
public:
static MyClass1 Field1;
}
そしてMyClass2.cpp:
MyClass1 MyClass2::Field1(arg1, arg2);
このようなコードはMyClass2::Fieldを初期化し、この初期化中にMyClass1コンストラクターを呼び出すことを期待しています。ただし、コンパイラはClass1にのみメモリを割り当て、次のようにコンストラクタを呼び出すことはないようです。
MyClass1 MyClass2::Field1 = *(MyClass1 *)malloc(sizeof(MyClass1));
自明でないコンストラクターで静的クラスメンバーを初期化するC++の「公式」方法はありますか?