在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++中,是否有任何“官方”的方法可以使用非平凡构造函数初始化静态类成员?
MyClass1 MyClass2::Field1(arg1, arg2);
将调用适当的构造函数。请展示一个 sscce ,说明在哪里出现了问题。 - chris