gpt4 book ai didi

c++ - 类中的类型名称功能

转载 作者:行者123 更新时间:2023-11-28 06:58:33 25 4
gpt4 key购买 nike

当我创建一个接受类型名的函数时,我可以在没有类的情况下很好地创建它,但是当我尝试将功能放在类中时,它会出错。任何人都可以向我解释我必须做什么才能使其正常工作以及为什么?

工作案例示例:这是我不将其放入类中的情况

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

任何帮助都会很棒 :)

最佳答案

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

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

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

关于c++ - 类中的类型名称功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22857635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com