我有以下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()中引用了未解析的外部符号....
这里出了什么问题?
答案 0 :(得分:0)
在classA.cpp
中您刚刚声明了全局函数。您必须在定义中包含A::
:
std::map< std::string, std::vector< string > > A::getSomething()
{
return map;
}
这样编译器知道方法getSomething()
属于类A