boost::variant
のすべての型が同じメソッドをサポートしている場合は、一般的に呼び出す方法がありますか?つまり、static_visitor
の各メソッドごとに別々に呼び出す方法はありませんか?boost :: variantの型に共通のメソッドを呼び出す
私は仕事に、このような何かを取得しようとしている:
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
が私の訪問者の仕組みをここに実装するのに良い選択肢かもしれないと思っていました。それは...ですか?