我收到以下错误
“Fehler 9错误LNK2019:Verweis aufnichtaufgelöstesexternesSymbol”“public:bool __cdecl gameClass :: getAttribute(class std :: basic_string,class std :: allocator>)”(?? $ getAttribute @ _N @ gameClass @@ QEAA_NV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@@ Z)“在Funktion”main“.C:\ Users \ Weexe \ documents \ visual studio 2010 \ Projects \ Engine \ Engine \ main.obj Engine “
我的代码 class.h
template <typename T> T getAttribute(std::string attribute);
class.cpp
template <typename T>
T gameClass::getAttribute(std::string attribute)
{
std::map<std::string,int> matchAttribute;
matchAttribute["windowTitle"]=1;
matchAttribute["windowSizeX"]=2;
matchAttribute["windowSizeY"]=3;
matchAttribute["isMenue"]=4;
switch(matchAttribute[attribute])
{
case 1:
return this->windowTitle;
break;
case 2:
return this->windowSizeX;
break;
case 3:
return this->windowSizeY;
break;
case 4:
return this->isMenue;
break;
}
}
任何人都有一个想法如何解决这个错误? 我认为它的语法错误或类似于:/
答案 0 :(得分:0)
模板只能在头文件(.h,.hpp,.inl)e.t.c中实现。这意味着.cpp类中的代码必须与class.h中的代码“绑定”,才能生成新的头文件。