2017-09-27 211 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

這是合法的C++。它是否「正確」取決於問什麼時候認爲正確。 – StoryTeller

+0

當然是合法的。 –

+2

是的,它在技術上是正確的,但可能是糟糕的設計。 – alain

回答

0

是的,這是正確的 - 沒有符號isvalid,其他文件將無法看到它。他們可以通過調用abc::do_something()

來讀取它的當前值。成員函數不需要是靜態的。所有的情況下,將能夠返回isValid

相同的電流值在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; 
} 
相關問題