LNK2019我班级模板功能出错

时间:2014-01-30 22:25:14

标签: c++ c++11 lnk2019

我收到以下错误

“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;
}
}

任何人都有一个想法如何解决这个错误? 我认为它的语法错误或类似于:/

1 个答案:

答案 0 :(得分:0)

模板只能在头文件(.h,.hpp,.inl)e.t.c中实现。这意味着.cpp类中的代码必须与class.h中的代码“绑定”,才能生成新的头文件。