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.