有這個基本的層次:多態顯式模板實例
// 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