静的クラスオブジェクトはなぜC++で使用できますか?彼らの使用は何ですか?静的クラスオブジェクト
#include<iostream>
using namespace std;
class Test {
static Test self; // works fine
/* other stuff in class*/
};
int main()
{
Test t;
getchar();
return 0;
}
静的クラスオブジェクトはなぜC++で使用できますか?彼らの使用は何ですか?静的クラスオブジェクト
#include<iostream>
using namespace std;
class Test {
static Test self; // works fine
/* other stuff in class*/
};
int main()
{
Test t;
getchar();
return 0;
}
これは機能します。 self
は両方とも静的メンバTest
であり、型がTest
であるため、コンパイラは特別な処理を行う必要はありません。この特別な事件が特に禁止される必要がある理由はありません。
は今、は変数を宣言したが、それを定義することができないという点で、Test::self
に問題があります。しかし、これは単にあなたのコードのバグであり、容易に固定されている:
class Test {
...
};
Test Test::self; // <--- the definition
int main()
{
...
あなたはクラスのすべてのインスタンス間で共有されているもののためにそれを使用します。たとえば、それを使用してSingleton patternを実装することができます。
+1完全回答:) –