2014-09-10 140 views
0

我試圖用一個布爾值 保持我的狀態在我的頭文件,我宣佈:布爾值沒有改變

bool *modified; 

在我的類的構造函數初始化我的狀態假:

bool initState = false; 
modified = &initState; 

然後我有一個按鈕,狀態更改爲true:

bool change = true; 
modified = &change; 

我人所以有一個按鈕來查看狀態:

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

的問題是,如果我真的改變了狀態,*修改依然會在正確的。我不知道問題出在哪裏。有沒有人有任何想法,它是。

+3

爲什麼你使用布爾指針時,一個普通的布爾值呢?你的代碼片段不夠完整,無法解釋你的錯誤 – EdChum 2014-09-10 08:15:53

+1

偶然是'change'和'initState'局部變量嗎? – 2014-09-10 08:15:56

+0

在頭中定義'modified'並不是一個好主意,因爲如果多個源文件包含它,就會冒着多個定義的風險。最好使用'extern'在頭文件中聲明並在源文件中定義一次。 – 2014-09-10 08:16:24

回答

1

你正在改變的modified的價值,這是一個bool*,也許指向堆棧分配,這將在函數返回被破壞的數據。您想要將指向的值更改爲modified

bool initState = false; 
*modified = initState; 

bool change = true; 
*modified = change; 

這是假設modified指針實際上分配在某處。

+0

謝謝我看到我做錯了什麼。從上面的評論我將只使用簡單的布爾。 – leam 2014-09-10 08:30:48

0

試試這個。

if (!(*modified)) 
else 


bool change = true; 
*modified = change; 

bool initState = false; 
*modified = initState; 
0

試試這個代碼 bool * modified;

bool initState = false; 
modified = initState; false 

bool change = true; 
modified = change; true 

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