我有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...
}

08-28 02:26