我有以下h文件:
#ifndef GLOBAL_DATA_H_
#define GLOBAL_DATA_H_
class GlobalData
{
public:
GlobalData();
...
private:
...
};
namespace global_data
{
static GlobalData globalDataInstance;
}
#endif
无数文件包含上面的头文件,并访问global_data :: globalDataInstance。如果我在GlobalData的构造函数体中放置断点,我会看到,当我运行应用程序时,构造函数会被无数次调用。这是为什么?
答案 0 :(得分:0)
根据这篇文章,似乎在命名空间内声明静态变量并不符合我的想法:
http://bytes.com/topic/c/answers/134682-initializing-static-variable-inside-namespace
如果您将此标题包含在更多内容中 你会得到一个源文件 多个变量。如果你改变了 你在一个文件中变量的值 不会看到另一个的变化 文件。
看起来属性要做的是使用extern而不是static来声明命名空间变量。