2012-01-28 10 views
4

静的クラスオブジェクトはなぜC++で使用できますか?彼らの使用は何ですか?静的クラスオブジェクト

#include<iostream> 

using namespace std; 

class Test { 
    static Test self; // works fine 

    /* other stuff in class*/ 

}; 

int main() 
{ 
    Test t; 
    getchar(); 
    return 0; 
} 

答えて

4

これは機能します。 selfは両方とも静的メンバTestであり、型がTestであるため、コンパイラは特別な処理を行う必要はありません。この特別な事件が特に禁止される必要がある理由はありません。

は今、変数を宣言したが、それを定義することができないという点で、Test::selfに問題があります。しかし、これは単にあなたのコードのバグであり、容易に固定されている:

class Test { 
    ... 
}; 

Test Test::self; // <--- the definition 

int main() 
{ 
    ... 
+0

+1完全回答:) –

4

あなたはクラスのすべてのインスタンス間で共有されているもののためにそれを使用します。たとえば、それを使用してSingleton patternを実装することができます。

関連する問題