J'ai 2 structures Base et Dérivé et boost: variante avec 2 types.
Boost variant et visiteur
struct Base : public boost::static_visitor<>
{
virtual void operator(Type1& t) {}
virtual void operator(Type2& t) {}
};
Ce que je veux faire est de ne définissent comme dérivé:
struct Derived : public Base
{
void operator(Type1& t) { /*some impl*/ }
};
Je ne l'emporte pas sur l'opérateur pour le type2 en supposant qu'il est défini dans la base et vide.
Pour une raison si j'écris
Derived visitor;
boost::apply_visitor(visitor, variant);
Je reçois erreur: pas de match pour appel à '(dérivé) (Type2 &)'
Bien sûr, si j'ajoute opérateur pour Type2 en dérivé cela fonctionne bien.
Quelqu'un pourrait-il aider à comprendre pourquoi cela ne fonctionne pas sans ajouter d'opérateur pour Type2?
' opérateur void virtuel (Type1 & t) {} 'n'est pas une syntaxe valide. Qu'avez-vous écrit exactement? – cpplearner