在我的项目中,有两个名为Configuration的类。一个是在命名空间中常见的。另一个没有命名空间,所以它在全局范围内。全局范围内的类是这样的: 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:错误:'std :: string :: Configuration'尚未声明
如何解决这个问题,以及为什么编译器将“std :: string :: Configuration”视为“std :: string :: Configuration”?
答案 0 :(得分:0)
您不需要在此明确使用全局范围,您可以省略::
。
int Configuration::a;
std::string Configuration::b;
如果你真的想要,你需要以某种方式创建一个额外的间接级别:
typedef ::Configuration conf;
std::string conf::b;