【发布时间】:2013-01-28 18:27:11
【问题描述】:
这在 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。 -
是的,你说得对,@Fred Larson,看起来初始化已经完成,但为时已晚。
标签: c++ windows class visual-c++