我有一個頭文件,它有一些靜態變量供我所有的文件使用。我在那裏有一個布爾變量初始化爲0 -不理解靜態布爾行爲
//in utility.h
static bool read_mess = false;
,我想改變爲true,如果--view讀取的消息是在命令行參數,以便我可以做這樣的事情,當我得到
來自客戶端的消息 -
//code from a different file
if(UTILITY_H::read_mess)
std::cout<<"\nMessage successfully received from Client 2: "<<in2;
在主,我檢查該命令行參數並設置變量,read_mess,真 -
//this is in a for, where temp is the command line arg[i]
else if(strcmp(temp.c_str(), "--view-read-messages") == 0) {
UTILITY_H::read_mess = true;
}
我可以將此林後打印read_mess的值它主要說它是真的。但是當我在上面發佈的if語句中檢查它的真實性時,read_mess會回到false。爲什麼會發生?我相信它只是簡單的東西,但我似乎無法使它工作。每次我做UTILITY_H ::時,utility.h中的所有變量都會重新初始化嗎?如果是這樣,爲什麼?
此外,我將變量移動到一個主靜態,但也有同樣的問題。 – Sterling
WTF是'UTILITY_H'? –
這可能是愚蠢的,但只是爲了澄清這一點 - 你確定你沒有做'if(UTILITY_H :: read_mess = false){}'嗎? –