6
如果我的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
可能是在这里实现我自己的访问者机制的更好选择。是吗?