Ich muss ein Programm schreiben, die Visitor Design Pattern implementieren. Das Problem besteht darin, dass die Basis-Besucherklasse eine Vorlagenklasse ist. Das bedeutet, dass BaseVisited :: accept() eine Template-Klasse als Parameter verwendet und da sie 'this' verwendet und ich 'this' brauche, um auf die richtige Laufzeitinstanz des Objekts zu zeigen, muss sie auch virtuell sein.
Ich würde gerne wissen, ob es ein Problem gibt.benötigen eine virtuelle Vorlage Mitglied Problemumgehung
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();
}
Was ist daran falsch? –
wird nicht kompiliert. http://stackoverflow.com/questions/2354210/template-member-function-virtual – yurib
Compiler akzeptiert keine Vorlagen in virtuellen Funktionen. – Puppy