当我创建一个带有typename的函数时,我可以在没有类的情况下创建它,但是当我尝试将函数放在类中时它会给我带来错误。任何人都可以向我解释我必须做些什么来使它工作以及为什么?
工作案例:这是我没有把它放在类
中的时候template<typename T>
bool Test(const char* _pcSection, const char* _pcKey, T& _tValue)
{
return true;
}
失败的示例:当我尝试将其放入类中时(因此我可以访问成员变量)
class CIniParser
{
public:
template<typename T>
bool GetValue(const char* _pcSection, const char* _pcKey, T& _tValue);
}
/////////////////////////
//Inside the .cpp...
template<typename T>
bool CIniParser::GetValue(const char* _pcSection, const char* _pcKey, T& _tValue)
{
//do stuff
return true;
}
任何帮助都会很棒:)
答案 0 :(得分:1)
在实例化模板类的实际实例之前,实际上没有任何编译。因此,将函数定义放在cpp
中是没有意义的:它们需要对使用模板的每个编译单元都可见。
正常的做法是将函数定义放在与模板声明相同的标题中。
(您可以将整个模板声明和定义放在源文件中,但前提是它们仅在该文件中使用)。