【发布时间】:2018-05-30 02:07:47
【问题描述】:
class A {public: virtual int func();};
class B: virtual public A {};
class C: virtual public A {};
class D: virtual public C {public: virtual int func();};
class E: public B, public D {};
// e is an object of E
e->func(); // this will run func defined in A, not in D
如上例所示,我有多重继承情况。我怎样才能实现它来调用最派生的方法? (调用func() 是在D 中实现的,而不是在A 中,当我写e->func() 时)
【问题讨论】:
-
您使用的是哪个编译器?你能发布一些真实的代码吗?
-
D::func在这种情况下会被调用 -
请阅读您现在应该在此页面顶部看到的 MCVE 链接
-
@DuyMạnhLê “真实代码”仅表示我们可以编译以重现您的问题的代码。不一定是您正在处理的任何代码最初导致了问题。
标签: c++ oop multiple-inheritance virtual-inheritance diamond-problem