ビジター デザイン パターンを実装するプログラムを作成する必要があります。問題は、基本ビジター クラスがテンプレート クラスであることです。これは、BaseVisited::accept() がテンプレート クラスをパラメータとして取り、'this' を使用し、'this' がオブジェクトの正しい実行時インスタンスを指す必要があるため、仮想化する必要があることを意味します。
この問題を回避する方法があれば知りたいです。
template <typename T>
class BaseVisitor {
public:
BaseVisitor();
T visit(BaseVisited *visited);
virtual ~BaseVisitor();
}
class BaseVisited {
BaseVisited();
template <typename T>
virtual void accept(BaseVisitor<T> *visitor) { visitor->visit(this); }; // problem
virtual ~BaseVisited();
}