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

+0

@ user1042389:*静的な*関数を呼び出すことによって、使用するデータにアクセスする方法でシングルトンに*類似*します。しかし、クラスA自体はシングルトンではありません。 – Nawaz

0

あなたはこのオブジェクトのポインタを使用することができます。そうする

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

SomeOtherClass* SomeClass::p;  

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

しかし、この割り当ては手動で破棄する必要があります。私はこれを避けたいと思います。 – Belloc

関連する問題