C++ 模板不能是虚拟的。模板类时出现错误

C++ 模板不能是虚拟的。模板类时出现错误,c++,oop,templates,C++,Oop,Templates,我有这样一个抽象的类: template<class V, class K> class MyAbstractCache { protected: ... public: ... virtual size_t getSize() const = 0; ... }; 有什么方法可以处理它吗?virtual只能在类定义内部使用,因此只需将其删除以用于类成员函数定义外部 template<class V, class K> size_t MyL

我有这样一个抽象的类:

template<class V, class K>
class MyAbstractCache {
protected:
    ...
public:
    ...
    virtual size_t getSize() const = 0;
    ...
};

有什么方法可以处理它吗?

virtual
只能在类定义内部使用,因此只需将其删除以用于类成员函数定义外部

template<class V, class K>
size_t MyLRUCache<V, K>::getSize() const { ... }
模板
大小\u t MyRuCache::getSize()常量{…}

注意,您也应该添加
const
,因为它是一个const成员函数。

关键字
virtual
仅用于声明,而不是定义(实现)。此外,在基类中的函数声明中只需要
virtual
关键字,而不需要在子类中。应该有人向GCC提交一个诊断错误。该错误消息非常糟糕。请注意,这也是类的错误。它实际上与模板无关。
template<class V, class K>
virtual size_t MyLRUCache<V, K>::getSize() { ... } // compile error :(
template<class V, class K>
size_t MyLRUCache<V, K>::getSize() const { ... }