我有一个头文件,它有一些静态变量供我所有的文件使用。我在那里有一个布尔变量初始化为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){}'吗? –