我正在尝试使用布尔值来保持我所处的状态。 在我的头文件中,我声明:
bool *modified;
在我的类构造函数中,我将状态初始化为false:
bool initState = false;
modified = &initState;
然后我有一个按钮,将状态更改为true:
bool change = true;
modified = &change;
我还有一个按钮来查看状态:
if(!*modified){
// doing something
} else{
// do something else
}
问题是,如果我实际更改了状态, !*已修改 仍将为true。我不知道问题出在哪里。有没有人有任何想法。
答案 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
}