我有一个包含3个类的C ++ DLL。我在我的“stdafx”头文件中添加了一个静态布尔变量(因为我的所有类都包含它)并且我正在尝试使用它。虽然我的所有类都看到了我的变量,但它们似乎都有不同的实例。如果我在一次类中将变量设置为true,那么我会注意到它在另一个类中是假的。有什么办法可以创建一个只能在DLL中的所有类中使用的变量吗?
答案 0 :(得分:4)
好吧,你把它标记为static
,这就是发生了什么。相反,在标题中标记extern
并在一个 TU中定义它。
不要修改stdafx
;这不是你的。使用您自己的共享标题。
答案 1 :(得分:2)
您的变量是static
,并且您在stdafx.h
中声明了它,它包含在项目中的所有源文件中。这意味着每个翻译单元都将包含自己的变量副本,这正是您所看到的行为。
要解决此问题,请在stdafx.cpp
bool MyBool = false;
然后在extern
stdafx.h
extern bool MyBool;