C++ 布尔值未更改

C++ 布尔值未更改,c++,qt,C++,Qt,我试图用一个布尔值来保持我所处的状态。 在我的头文件中,我声明: bool *modified; 在类构造函数中,我将状态初始化为false: bool initState = false; modified = &initState; 然后我有一个按钮将状态更改为true: bool change = true; modified = &change; 我还有一个按钮可以查看状态: if(!*modified){ // doing something } els

我试图用一个布尔值来保持我所处的状态。 在我的头文件中,我声明:

bool *modified;
在类构造函数中,我将状态初始化为false:

bool initState = false;
modified = &initState;
然后我有一个按钮将状态更改为true:

bool change = true;
modified = &change;
我还有一个按钮可以查看状态:

if(!*modified){
    // doing something 
} else{
   // do something else 
}
问题是如果我真的改变了状态,*修改后的仍将为true。我不知道问题出在哪里。有人知道它在哪里吗

试试这个

if (!(*modified))
else


bool change = true;
*modified = change;

bool initState = false;
*modified = initState;

您正在更改
modified
的值,这是一个
bool*
,可能指向堆栈分配的数据,这些数据将在函数返回时销毁。您想更改
modified
所指向的值

bool initState = false;
*modified = initState;

bool change = true;
*modified = change;
这是假设
修改后的
指针实际分配在某个位置。

尝试此代码 bool*修改

bool initState = false;
modified = initState;   false

bool change = true;  
modified = change; true

if ( *modified != initState)
{
do something
}
else 
{
do something
}

为什么要使用布尔指针,而普通布尔指针就可以了?您的代码片段不够完整,无法解释您的错误是
change
initState
局部变量,这是偶然的?将
modified
的定义放在头中不是一个好主意,因为如果有多个源文件包含它,您将面临多个定义的风险。最好使用
extern
在头文件中声明,并在源文件中定义一次。如果您只有一个普通布尔值,那么分配一个本地布尔值将保持使用指针使问题变得复杂的状态。我现在就明白了。我现在换成普通的傻瓜了。谢谢。我知道我做错了什么。根据上面的评论,我将使用一个简单的bool。