有这个基本的层次:多态显式模板实例
// header
class Base
{
virtual void method() { }
virtual ~method() { }
};
class Subclass : Base
{
virtual void method() { }
virtual ~method() { }
};
我想有两个明显的变化子类基地(无需提供子类,如果可能的两种实现),因此它已建议使用显式模板实例:
// header
class Base
{
virtual void method() { }
virtual ~method() { }
};
class Base1 : public Base { };
class Base2 : public Base { };
template <typename T>
class Subclass : public T
{
virtual void method();
virtual ~method() { }
};
// cpp
template <typename T>
void Subclass<T>::method()
{
}
template class Subclass<Base1>;
template class Subclass<Base2>;
我得到这个错误:
there are no arguments to 'method' that depend on a template parameter, so a declaration of 'method' must be available
这是正确的方法吗?我显然必须模板Base才能编译,但是用什么?
不要忘记虚拟析构函数。就像金钱和性不同,你需要去寻求它,否则你就不会得到它。 – wilhelmtell 2010-11-17 16:22:51