我有一个头文件MyNameSpace.h,我使用命名空间,如下所示:
namespace NameSpace1
{
string first = "First";
...
}
namespace NameSpace2
{
string top = "Top";
}
Run Code Online (Sandbox Code Playgroud)
但是当我在包括头文件在内的其他类中使用命名空间对象时.我得到了NameSpace1 :: first的重复符号错误.具体含义以及如何解决此解决方案.
rek*_*o_t 15
你不应该在头文件中定义全局变量,你需要告诉编译器它在别处用extern
关键字定义.否则,编译器会尝试在包含标头的每个源文件中定义变量.
例如.在MyNameSpace.h中你做了:
namespace NameSpace1 {
extern std::string first;
}
Run Code Online (Sandbox Code Playgroud)
然后你将在MyNameSpace.cpp中执行此操作:
namespace NameSpace1 {
std::string first = "First";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1684 次 |
最近记录: |