c++中如何初始化全局作用域的静态成员
How to initialize static members which belong to global scope in c++
在我的项目中,有两个名为Configuration的类。一个是在命名空间common中。另一个没有名称空间,所以它在全局作用域中。全局作用域中的类是这样的:Configuration.h:
class Configuration
{
public:
static int a;
static string b;
void func();
}
Configuration.cpp:
#include "Configuration.h"
int ::Configuration a; //ok
std::string ::Configuration b;//error,the complier treat it like this "std::string::Configuration"
来自编译器的消息是这样的: Configuration .cpp:17: error: ' std::string::Configuration '未被声明
如何解决这个问题,为什么编译器将"std::string::Configuration"视为"std::string::Configuration"?
您不需要在这里显式地使用全局作用域,您可以省略::
。
int Configuration::a;
std::string Configuration::b;
如果你真的想,你需要以某种方式创建一个额外的间接层次:
typedef ::Configuration conf;
std::string conf::b;
相关文章:
- 不同作用域中的静态变量和全局变量
- 在构造函数中输入对象时C++类成员作用域
- 为什么不能直接引用作用域枚举类成员,而不能为无作用域枚举生成类成员?
- 无法从派生类型的作用域访问另一个实例的受保护成员
- 在没有显式作用域的情况下无法访问模板基类的静态成员
- 类的静态成员变量(受保护)的作用域
- 使用作用域内生成的指针初始化静态成员
- C++静态成员函数中静态变量的作用域
- 如何在 c++ 中创建一个可调试的文件作用域(静态?)类
- 将函子映射到失去作用域的成员函数
- 使用作用域运算符访问非静态成员变量
- 是块作用域静态或线程存储持续时间变量初始化失败的原因
- 为什么文件作用域静态变量必须初始化为零
- 静态成员初始化器的Lambda作用域
- 被视为依赖作用域的函数模板的函数作用域结构体的静态成员函数
- c++中如何初始化全局作用域的静态成员
- 将静态成员的作用域限制为n个特定的类
- 静态类数据成员的作用域
- 静态成员变量文件作用域
- 如何在实例和静态作用域之间创建成员变量