Se tutti i tipi nel mio boost::variant
supportano lo stesso metodo, esiste un modo per chiamarlo genericamente (cioè non chiamarlo separatamente per ogni metodo dello static_visitor
)?Chiamare metodi comuni ai tipi in un boost :: variante
Sto cercando di ottenere qualcosa di simile al lavoro:
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();
}
ma non riesce a compilare dicendo 'boo' : is not a member of 'boost::variant<T0_,T1,T2>'
.
Attualmente, ho alcune classi tutte ereditate da un'interfaccia in modo che il loro singolo metodo condiviso possa essere utilizzato polimorficamente. Voglio anche essere in grado di utilizzare le classi tramite un visitatore in quanto tutti gli altri metodi sono unici per ogni classe concreta. Speravo che boost::variant
potesse essere un'alternativa migliore all'implementazione del mio meccanismo di visitatore qui. È?