логическое значение не изменилось

0

Я пытаюсь использовать логическое значение, чтобы сохранить состояние, в котором я находится. В моем заголовочном файле я заявляю:

bool *modified;

В моем конструкторе класса я инициализирую состояние на false:

bool initState = false;
modified = &initState;

Затем у меня есть кнопка, которая изменяет состояние на true:

bool change = true;
modified = &change;

У меня также есть кнопка, чтобы увидеть состояние:

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

Проблема в том, что если я действительно изменил состояние, * * измененный будет по-прежнему верным. Я не понимаю, в чем проблема. У кого-нибудь есть идеи, где это.

  • 3
    почему вы используете логический указатель, когда обычный логический будет делать? Ваш фрагмент кода не является полным, чтобы объяснить вашу ошибку
  • 1
    Являются ли change и initState локальные переменные, случайно?
Показать ещё 4 комментария
Теги:
qt

3 ответа

1
Лучший ответ

Вы изменяете значение modified, которое является bool*, и, возможно, указывать на данные, выделенные стеком, которые будут уничтожены при возврате функции. Вы хотите изменить значение, на которое указывает modified.

bool initState = false;
*modified = initState;

bool change = true;
*modified = change;

Предполагается, что modified указатель фактически размещен где-то.

  • 0
    спасибо, я вижу, что я сделал не так. из приведенных выше комментариев я просто буду использовать простой bool для этого.
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
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню