2017-09-27 23 views
0
/*In header file */ 
class abc{ 
public: 
static bool do_something(); 

} 

/*In other file */ 
static bool isvalid=false; //global variable 

bool abc::do_something() 
{ 
return isValid; 
} 

コンパイルがうまくいきます。使用するのが正しいことを知りたいですか?クラスの静的関数は、グローバル静的変数にアクセスできますか?

+1

で、それはプライベートと静的にすることですisValid

の同じ電流値を返すことができるようになりますこれは合法的なC++です。それが「正しい」かどうかは、尋ねるときに正しいと思われるものによって決まります。 – StoryTeller

+0

確かに使用することは合法です。 –

+2

はい、それは技術的には正しいですが、おそらくデザインが正しくありません。 – alain

答えて

0

はいいいえ - isvalidのシンボルはありません。他のファイルはそれを見ることができません。彼らは現在の値を呼び出して呼び出すことができますabc::do_something()

メンバ関数は静的である必要はありません。すべてのインスタンスは、C++でデータを隠蔽する通常の方法は、クラス...

ヘッダファイル

class abc{ 
    static bool isValid; // can be seen, does not use space in an instance 
public: 
    static bool do_something(); 

} 


/*In other file */ 
bool abc::isvalid=false; //global variable 

bool abc::do_something() 
{ 
    return isValid; 
} 
関連する問題