Necesito escribir un programa que implementa el patrón de diseño de visitante. El problema es que la clase de visitante base es una clase de plantilla. Esto significa que BaseVisited :: accept() toma una clase de plantilla como parámetro y como usa 'this' y necesito 'this' para apuntar a la instancia de tiempo de ejecución correcta del objeto, también debe ser virtual.
Me gustaría saber si hay alguna forma de solucionar este problema.necesita una solución de miembro de plantilla virtual
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();
}
¿Qué pasa con eso? –
no compilará. http://stackoverflow.com/questions/2354210/template-member-function-virtual – yurib
El compilador no aceptará plantillas en funciones virtuales. – Puppy