Статическая переменная-член C ++ - доступ между файлами - PullRequest
0 голосов
/ 11 июля 2019

Я объявил статическую переменную-член, объявленную в one.h и инициализированную в one.cpp следующим образом;

one.h

class one{
public static bool var1;
public void change();
}

one.cpp

#include 'one.h'
bool one::var1 = false;
void one::change()
{
one::var1 = true;
}

Функция изменения вызывается из другого потока.

Теперь в two.cpp Iиметь следующий код;

#include 'one.h'
class two{
public void fun()
{
//check the value of one::var1 after the change function has been called
}
}

Внутри этой функции значение, которое я получаю для one :: var1, всегда ложно.

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

Почему это не меняет значение статической переменной?

1 Ответ

0 голосов
/ 11 июля 2019

Если вы используете переменную из нескольких потоков, я бы порекомендовал вам использовать static std::atomic<bool> var1;

Иногда компилятор может кэшировать значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...