C ++静态成员变量-文件之间的访问

时间:2019-07-11 15:51:46

标签: c++ static

我已经声明了一个在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。

我了解到静态成员位于定义文件的本地。我不确定这种行为。

为什么这不更改静态变量的值?

1 个答案:

答案 0 :(得分:0)

如果您正在多个线程中使用变量,我建议您使用static std::atomic<bool> var1;

有时候编译器可能会缓存该值。