Jeśli wszystkie typy w moim boost::variant
wspierania tej samej metody, czy istnieje sposób, aby nazwać ogólnie (tzn nie nazywając ją oddzielnie dla każdego sposobu static_visitor
)?Wywoływanie metody wspólne dla typów w boost :: variant
Próbuję uzyskać coś podobnego do pracy:
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();
}
ale nie udaje mu się skompilować mówiąc 'boo' : is not a member of 'boost::variant<T0_,T1,T2>'
.
Obecnie niektóre klasy dziedziczą z interfejsu, dzięki czemu ich pojedyncza wspólna metoda może być używana polimorficznie. Chcę również móc korzystać z klas przez odwiedzającego, ponieważ wszystkie inne metody są unikalne dla każdej konkretnej klasy. Miałem nadzieję, że boost::variant
może być lepszą alternatywą dla implementacji mojego mechanizmu odwiedzającego tutaj. Czy to jest?