Déclaration avancée de classe de modèle (modèle de conception du visiteur)

J’essaie de déclarer une classe de modèle A pour utilisation dans une classe de Visitor . Il suffirait à mes fins de déclarer l’instance int A de la classe A J’ai essayé deux approches mais les deux donnent des erreurs différentes et je ne sais pas comment procéder.

Voici un MWE de mon erreur:

 namespace visitor{ class Visitor{ public: virtual void visit(nsp::A*) = 0; }; } namespace nsp{ template  class A{ A(); T t_atsortingbute; void accept(visitor::Visitor*); }; void A::accept(visitor::Visitor*){ v -> visit(this); } } int main(){ return 0; } 

Vous pouvez essayer d’exécuter le code ici pour voir l’erreur que je reçois:

 error: specializing member 'nsp::A::accept' requires 'template' syntax 

J’apprécie toute aide.

Je pense que vous mélangez les choses ici, vous devriez déclarer accepter la méthode comme:

 template void A::accept(visitor::Visitor* v){ v -> visit(this); } 

car la classe A est un modèle. Ensuite, vous pouvez vous spécialiser pour tout type.