我已经声明了一个在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中,我有以下代码;
#include 'one.h'
class two{
public void fun()
{
//check the value of one::var1 after the change function has been called
}
}
在此函数中,我为one :: var1获得的值始终为false。
我了解到静态成员位于定义文件的本地。我不确定这种行为。
为什么这不更改静态变量的值?
答案 0 :(得分:0)
如果您正在多个线程中使用变量,我建议您使用static std::atomic<bool> var1;
有时候编译器可能会缓存该值。