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