为什么这行得通
struct Base {
virtual void visit(const A &) { };
virtual void visit(const B &) { };
}
这在调用访问方法时抱怨歧义
template< typename T >
struct X {
virtual void visit(const T &) { };
};
struct Base: X< A >, X< B > { };
这也显示了同样的问题:
struct Y {
virtual void visit(const A &) { };
};
struct Z {
virtual void visit(const B &) { };
};
struct Base: Z, Y { };
不知何故,它看起来像多重继承与虚函数签名混淆......
使用 gcc 版本 4.8.0 20130411(预发布)