编译c ++类时获取未解析的外部符号

时间:2014-09-19 20:00:50

标签: c++ linker unresolved-external

我有以下classA.h

#ifndef ClassAH
#define ClassAH
class A
{
public :
      A();
     ~A();
      static std::map< std::string, std::vector< string > > getSomething();
}
#endif

以及classA.cpp中的实现

#include classA.h

std::map< std::string, std::vetor< string > > classA::getSomething()
{
   //implementation

   return map
}

现在我有另一个类classB.cpp,我正在做:

#include classA.h
void method1()
{
   std::map< std::string, std::vector< string > > map = classA::getSomething();
}

注意getSomething()是静态的。

当我编译classB时 我在方法getSomething()上收到错误LNK2019,说明方法1()中引用了未解析的外部符号....

这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

classA.cpp中您刚刚声明了全局函数。您必须在定义中包含A::

std::map< std::string, std::vector< string > > A::getSomething() 
{
    return map;
}

这样编译器知道方法getSomething()属于类A