我有2个文件:
等级1
tier1.cpp
在tier1.h中,我有:
//code
namespace variab
{
int x...; float tpl...; //etc
}
namespace universal
{
using namespace variab;
//some functions prototypes
}
在tier1.cpp中,定义了函数。其中一些功能位于混合名称空间中,例如:universal :: extG ::。这些函数使用的是variab名称空间中的变量。
在要找到main的源文件中,包括tier1.h。
当我尝试编译程序时,它给我指出了在variab名称空间中找到的变量的错误。错误到处都是一样的。它是这样的:
error LNK2001: unresolved external symbol "int * variab::st" (?st@variab@@3PAHA)
问题出在哪里?
最佳答案
在头文件中,您要在名称空间中声明变量。您只需要使用extern
关键字声明它们:
namespace variab
{
extern int x;
extern float tpl;
// etc...
}
然后在源文件中进行定义:
namespace variab
{
int x;
float tpl;
// etc...
}