Я пытаюсь использовать логическое значение, чтобы сохранить состояние, в котором я находится. В моем заголовочном файле я заявляю:
bool *modified;
В моем конструкторе класса я инициализирую состояние на false:
bool initState = false;
modified = &initState;
Затем у меня есть кнопка, которая изменяет состояние на true:
bool change = true;
modified = &change;
У меня также есть кнопка, чтобы увидеть состояние:
if(!*modified){
// doing something
} else{
// do something else
}
Проблема в том, что если я действительно изменил состояние, * * измененный будет по-прежнему верным. Я не понимаю, в чем проблема. У кого-нибудь есть идеи, где это.
Вы изменяете значение modified
, которое является bool*
, и, возможно, указывать на данные, выделенные стеком, которые будут уничтожены при возврате функции. Вы хотите изменить значение, на которое указывает modified
.
bool initState = false;
*modified = initState;
bool change = true;
*modified = change;
Предполагается, что modified
указатель фактически размещен где-то.
Попробуй это.
if (!(*modified))
else
bool change = true;
*modified = change;
bool initState = false;
*modified = initState;
попробуйте этот код bool * modified;
bool initState = false;
modified = initState; false
bool change = true;
modified = change; true
if ( *modified != initState)
{
do something
}
else
{
do something
}
change
иinitState
локальные переменные, случайно?