类中的typename功能

时间:2014-04-04 08:38:49

标签: c++ typename

当我创建一个带有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;
}

任何帮助都会很棒:)

1 个答案:

答案 0 :(得分:1)

在实例化模板类的实际实例之前,实际上没有任何编译。因此,将函数定义放在cpp中是没有意义的:它们需要对使用模板的每个编译单元都可见。

正常的做法是将函数定义放在与模板声明相同的标题中。

(您可以将整个模板声明和定义放在源文件中,但前提是它们仅在该文件中使用)。