私はこの優れた訪問者パターンに基づいていくつかのクラスを書いたhere(私の実装は少し異なります)。作品上記C++:テンプレートクラスから派生した仮想純関数をオーバーライド
template<typename... Types>
class Visitable {
public:
virtual void accept(Visitor<Types...>& visitor) = 0;
};
class MyClass : public Visitable<int, string>
{
virtual void accept(Visitor<int, string>& visitor)
{
/*** my code ***/
}
};
このコードが、私はそのようなMyClass
を実装したいと思います:
class MyClass : public Visitable<int, string>
{
template<typename... Types>
virtual void accept(Visitor<Types...>& visitor)
{
/*** my code ***/
}
};
明らか
私は受け入れるメソッドの呼び出しを変更しますが、私はこのエラーを持っている:「は抽象クラスをインスタンス化することはできません」 。なぜこの2番目のケースでは、accept()
がオーバーライドされないのですか? MyClassはテンプレート化する必要がありますか?
ありがとうございました。
テンプレートは関数ではないため、基本クラス関数をオーバーライドする関数はありません。 –