2012-02-19 38 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