【发布时间】:2013-05-03 09:05:08
【问题描述】:
为什么会这样
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(预发布)
【问题讨论】:
-
旁注:在
}结束函数体之后,您不需要;,就像在virtual void visit(const A &) { };中那样,这很难看。
标签: c++ inheritance multiple-inheritance name-lookup class-members