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