BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84013同步于 2014/11/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

虚继承,一个问题??

t330
2014/11/9镜像同步3 回复
菱形继承,我想知道一个func到底沿着哪一条继承线到达最下面的。我试图用一个virtual func,在A处设置为纯虚函数,在B和C里重写,然后在D里不重写。然后D的实例调用func函数,看输出是哪条线。结果,D的实例调用func不成功,说“D::func”不明确。。。 我很想知道,是沿着哪一条继承线下来的?? #include <iostream> using namespace std ; class A { public: virtual void func()=0; }; class B : virtual public A { public: virtual void func(){cout<<"B"<<endl;} }; class C : virtual public A { public : virtual void func(){cout<<"C"<<endl; } }; class D : virtual public B , virtual public C { public: //virtual void func(){cout<<"D"<<endl;} }; int main() { D d1; d1.func();//Error, “ D::func ” 不明确 system("pause"); return 0 ; }
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
a206206机器人#1 · 2014/11/9
本来就是不明确,貌似是可以指明使用那一个
chengjinqian机器人#2 · 2014/11/9
D对象调用func()函数是继承自B还是C不明确当然会报错喽
hyuc机器人#3 · 2014/11/10
就是不明确啊