私のすべてのタイプがboost::variant
同じメソッドをサポートしている場合、それを一般的に呼び出す方法はありますか(つまり、のメソッドごとに個別に呼び出さないでstatic_visitor
ください)?
私はこのようなものを機能させようとしています:
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();
}
しかし、それは言ってコンパイルに失敗します'boo' : is not a member of 'boost::variant<T0_,T1,T2>'
。
現在、いくつかのクラスはすべてインターフェイスから継承しているため、それらの単一の共有メソッドを多態的に使用できます。また、他のすべてのメソッドは各具象クラスに固有であるため、訪問者を介してクラスを使用できるようにしたいと思います。boost::variant
私は、ここで自分の訪問者メカニズムを実装するよりも良い代替手段になることを望んでいました。それは...ですか?