布尔值未更改

时间:2014-09-10 08:13:33

标签: c++ qt

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

bool *modified;

在我的类构造函数中,我将状态初始化为false:

bool initState = false;
modified = &initState;

然后我有一个按钮,将状态更改为true:

bool change = true;
modified = &change;

我还有一个按钮来查看状态:

if(!*modified){
    // doing something 
} else{
   // do something else 
}

问题是,如果我实际更改了状态, !*已修改 仍将为true。我不知道问题出在哪里。有没有人有任何想法。

3 个答案:

答案 0 :(得分:1)

您正在更改modified的值,即bool*,并且可能指向堆栈分配的数据,这些数据将在函数返回时被销毁。您希望按modified更改指向的值。

bool initState = false;
*modified = initState;

bool change = true;
*modified = change;

这假设modified指针实际上是在某处分配的。

答案 1 :(得分:0)

试试这个。

if (!(*modified))
else


bool change = true;
*modified = change;

bool initState = false;
*modified = initState;

答案 2 :(得分:0)

试试这段代码     bool * modified;

bool initState = false;
modified = initState;   false

bool change = true;  
modified = change; true

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