ドット表記を使用してクラスの静的メンバー変数にアクセスすることはできますか?静的メンバー変数へのアクセス
4
A
答えて
13
インスタンス変数を使用している場合は、ドット演算子を使用してアクセス可能な静的メンバーにアクセスすることができます。
#include <iostream>
using namespace std;
class Test{
public:
static int no;
};
int Test::no;
int main(){
cout << "\n" << Test::no;
Test::no=100;
Test a;
cout << "\n" << a.no;
return 0;
}
2
2
それは必ずしも「することができます」質問(コンパイラは、多くの場合、警告があなたをオフにできるようになるので)、しかし「あなたべき」という質問ではありません。
スタティックデータメンバーはオブジェクトの一部ではないため、そのように扱うべきではありません。
静的データメンバに「通常の」データメンバとしてアクセスすると、異なるセマンティクスを暗示する可能性があるため、コードを読みにくくする可能性があります(これは通常そうではありません)。
+0
これは、特にテンプレートコードを書くときには、やはり便利です。これは、型名ではなくその型の値を持つだけの静的関数を呼び出すことができます(戻り値の型がtypedefされないテンプレート関数から返される場合など)。おそらく想像するのは難しいでしょう。 –
関連する問題
- 1. 静的メソッドから非静的メンバー変数へのアクセス
- 2. typescript、アクセス静的メンバー
- 3. 非静的メンバーの静的メンバー関数
- 4. マルチスレッドシステムの静的変数へのアクセス
- 5. 静的メンバー関数が静的専用変数にアクセスするときのリンカーエラー
- 6. C++:静的メンバー変数
- 7. Dインラインアセンブラ:静的変数へのアクセス
- 8. 外部プライベート静的変数へのアクセス
- 9. "未定義参照"エラー。 (メンバー関数から静的メンバー変数へ)
- 10. アクセス静的変数
- 11. 静的メンバー関数
- 12. 保護された静的メンバー変数
- 13. ベクトルクラスのメンバー変数へのアクセス
- 14. メンバー変数へのアクセス方法は?
- 15. 静的メンバー関数のスローエラー
- 16. フレンド関数からの静的変数へのアクセス
- 17. 静的ライブラリの静的メンバー
- 18. インスタンス化されたオブジェクトを持たない非静的メンバー関数へのアクセス?
- 19. 静的メンバーの初期化中にプライベート静的関数にアクセスする
- 20. 非静的メンバー関数は静的メンバー関数またはデータにアクセスできますか?
- 21. 静的メンバー関数とスレッドセーフ
- 22. Const静的メンバー関数
- 23. Javaの別のクラスからの静的変数へのアクセス
- 24. 他のプログラムの静的変数へのアクセス方法
- 25. Arduino:クラスの静的メソッドのstatic変数へのアクセス
- 26. Pythonのモジュールと静的メソッド間のグローバル変数へのアクセス
- 27. AS3 - 未定義のプロパティへのアクセス(静的変数)
- 28. SQL Serverの静的変数へのアクセスを同期するSQLCLR
- 29. リアクションネイティブ - 同じクラスの静的変数へのアクセス
- 30. 静的メンバー関数から非静的メンバー関数を呼び出す方法
ありがとう。なぜなら、Test.noのようなクラスの静的メンバ変数にアクセスするが、エラーはないVC表記をドット表記で使用してコードをコンパイルするからです。 – domlao
'Test.no'は静的メンバーを参照する有効な方法ではありません。メンバーアクセス演算子の左側はオブジェクトでなければなりません。したがって、 'Test :: no'または' a.no'です。もちろん、統計的には、 'Test :: no'を好むでしょう。 –