【发布时间】:2012-02-19 12:15:21
【问题描述】:
有没有办法在 main() 启动后初始化静态类成员?
【问题讨论】:
-
你说的静态子对象是什么意思?你是说静态成员吗?
-
是一个静态成员,它是一个嵌入类的对象
标签: c++ static-members lazy-initialization
有没有办法在 main() 启动后初始化静态类成员?
【问题讨论】:
标签: c++ static-members lazy-initialization
一种方法是用静态成员函数替换静态成员数据。
假设你有这门课:
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;
}
};
请注意,它不是线程安全的,但您也可以使其成为线程安全的。
【讨论】:
A 类本身并不是单例。
你可以为这个对象使用一个指针:
class SomeClass{
public:
static SomeOtherClass* p;
};
SomeOtherClass* SomeClass::p;
void main(){
SomeClass::p = new SomeOtherClass();
}
【讨论】: