【发布时间】:2014-01-17 09:19:36
【问题描述】:
我正在尝试实现以下类:
class a {
public :
//...
f();
//...
};
class b : virtual public a {
public :
//...
f();
//...
}
class c : virtual public a {
public :
//...
f();
//...
}
class d : virtual public c {
public :
//...
f();
//...
}
class e : public b, public d {
public :
//...
}
但是编译器告诉我对成员函数 f() 的请求是模棱两可的。 我希望'e'从'd'的f()版本继承(所以'c'版本)但是只有当我在'e'中重新声明f()时代码才能编译。因此,只有当我将“e”构造函数编码如下时,我才能编译:
e::e(...) : a(...), c(...), b(...), d(...)
{
}
这对我来说似乎不合逻辑,因为 'd' 继承自 'c' 和 'b' 将首先构造。
【问题讨论】:
标签: c++ inheritance virtual