如何定义派生模板类的功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何定义派生模板类的功能?相关的知识,希望对你有一定的参考价值。

我正在尝试从class FHhashQPwFind定义函数find。你能告诉我我做错了什么吗?

我把编辑所说的“这里是错误”放在那里:

错误:模板参数数量错误(1,应为2)

template <class Object, typename KeyType>
class FHhashQPwFind: public FHhashQP<Object>
{
public:
    const Object find(const KeyType & key);
protected:
        int myHashKey(const KeyType & key) const;
    int findPosKey( const KeyType & key ) const;
};
template <class Object, typename KeyType>
const Object FHhashQPwFind<Object>::find(const JeyType & key)//HERE IS THE ERROR
{

}
答案

我当然会尝试

const Object FHhashQPwFind<Object, KeyType>::find(const KeyType & key)

还要小心你在模板参数中将它命名为JeyType

该错误是因为您的方法被声明为

 FHhashQPwFind<Object>

当它需要第二个参数KeyType时:

 FHhashQPwFind<Object, KeyType>

在编写方法时。

以上是关于如何定义派生模板类的功能?的主要内容,如果未能解决你的问题,请参考以下文章

传递派生模板类的向量

派生类的模板类作为函数的参数 - 危险?

如何使用 C++ 中的模板编程从基类创建派生类?

派生类模板看不到基类的成员[重复]

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段2——.vue文件的模板