Wenn alle Typen in meinem boost::variant
die gleiche Methode unterstützen, gibt es eine Möglichkeit, es generisch aufzurufen (d. H. Nicht separat für jede Methode der static_visitor
aufrufen)?Calling Methoden gemeinsamen Typen in einem boost :: variant
Ich versuche, etwas zu erhalten zu arbeiten:
class A
{
void boo() {}
};
class B
{
void boo() {}
};
class C
{
void boo() {}
};
typedef boost::variant<A, B, C> X;
void foo(X& d)
{
x.boo();
}
aber es funktioniert nicht sagen 'boo' : is not a member of 'boost::variant<T0_,T1,T2>'
zu kompilieren.
Derzeit habe ich einige Klassen alle von einer Schnittstelle erben, so dass ihre einzige gemeinsame Methode polymorph verwendet werden kann. Ich möchte auch in der Lage sein, die Klassen über einen Besucher zu verwenden, da alle anderen Methoden für jede konkrete Klasse einzigartig sind. Ich habe gehofft, könnte eine bessere Alternative zur Implementierung meines eigenen Besuchermechanismus hier sein. Ist es?