有没有办法在main()启动后初始化类的静态子对象?
答案 0 :(得分:2)
一种方法是替换静态成员函数的静态成员数据。
说你是这堂课:
class A
{
static B static_b; //static member data
};
//.cpp
B A::static_b; //definition (required)
因此,您可以将您的课程定义为:
class A
{
static B static_b() //static member function!
{
static B b;
return b;
}
};
请注意,它不是线程安全的,但您也可以使其成为线程安全的。
答案 1 :(得分:0)
您可以使用此对象的指针:
class SomeClass{
public:
static SomeOtherClass* p;
};
SomeOtherClass* SomeClass::p;
void main(){
SomeClass::p = new SomeOtherClass();
}