0

main() の開始後に静的クラス メンバーを初期化する方法はありますか?

4

2 に答える 2

2

これを行う 1 つの方法は、静的メンバー関数の静的メンバー データを置き換えることです。

このクラスがあるとします:

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

これはスレッドセーフではありませんが、スレッドセーフにすることもできます。

于 2012-02-19T12:24:42.783 に答える
0

このオブジェクトにはポインターを使用できます。

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

SomeOtherClass* SomeClass::p;    

void main(){
    SomeClass::p = new SomeOtherClass();
}
于 2012-02-19T12:22:42.600 に答える