Je dois écrire un programme implémentant le modèle de conception de visiteur. Le problème est que la classe de visiteurs de base est une classe de modèle. Cela signifie que BaseVisited :: accept() prend une classe template comme paramètre et comme elle utilise 'this' et que j'ai besoin de 'this' pour pointer vers la bonne instance d'exécution de l'objet, elle doit aussi être virtuelle.
Je voudrais savoir s'il y a moyen de contourner ce problème.besoin d'un membre de modèle virtuel solution de contournement
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();
}
Quel est le problème avec cela? –
il ne compilera pas. http://stackoverflow.com/questions/2354210/template-member-function-virtual – yurib
Le compilateur n'accepte pas les modèles dans les fonctions virtuelles. – Puppy