2012-02-19 70 views

回答

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; 
    } 
}; 

注意,它不是线程安全的,但你可以把它也是线程安全的。

+0

这似乎是确定的,因为对象b将在main()的末尾自动销毁。这与单身人士不是很相似吗? – Belloc 2012-02-19 12:31:11

+0

@ user1042389:它通过调用* static *函数来访问要使用的数据的方式,它与* singleton类似。但“A”类本身不是单身人士。 – Nawaz 2012-02-19 12:35:34

0

您可以使用指针此对象:

class SomeClass{ 
public: 
    static SomeOtherClass* p; 
}; 

SomeOtherClass* SomeClass::p;  

void main(){ 
    SomeClass::p = new SomeOtherClass(); 
} 
+0

但是这个分配必须手动销毁。我想避免这一点。 – Belloc 2012-02-19 12:25:16