我在使全局变量起作用时遇到了小问题。我正在使用 Visual Studio 2008 和标准 C++。
我有两个项目,一个是静态库,第二个是使用该库的测试程序。我在 global.h 中有一个全局变量,例如
#ifndef GLOBAL_H
#define GLOBAL_H
#include <string>
extern std::string globalWord;
#endif // GLOBAL_H!
我有一个 global.cpp,我在其中初始化这个变量。该变量在我的库项目中使用。我正在测试项目中为此变量设置一个值,但该值没有反映在库项目中。
我已经调试过,它在测试项目中显示了新值,但是当控件到达库项目时,该变量值显示为空。那么这个全局变量的作用域只限于它所属的项目吗?
或者有更好的方法来做到这一点吗?我不想修改库中的函数或构造函数参数来传递此值。
任何帮助都会很棒。
Edit:
这是在 global.cpp 中声明该变量的方式
#include <string>
#include "../global.h"
std::string globalWord = "";
这就是我在图书馆中使用它的方式
#include "../global.h"
string text = globalWord;
Thanks
不要使用全局变量。只是不要。如果您必须拥有全局可访问的数据,更好的是使用将返回 globalWord 的全局函数,如下所示:
std::string globalWord()
{
static std::string word("Hi Mom");
return word;
}
这可以帮助您避免初始化顺序问题(请阅读《Effective C++》第 #4 条)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)