首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个多重继承如何不报错,小弟我记得以前报错的呀

2012-06-04 
这个多重继承怎么不报错,我记得以前报错的呀这个多重继承怎么不报错,我记得以前报错的呀C/C++ codeclass A

这个多重继承怎么不报错,我记得以前报错的呀
这个多重继承怎么不报错,我记得以前报错的呀

C/C++ code
class A{public:    int a;    void s(){}};class X : public A{};class Y : public A{};class Z : public X, public Y{};void main(){    Z z;}


[解决办法]
为什么要报错?如果以前报错,说明你的编译器是错的。比如VC6估计有可能报错。反正现在你写的这个,C++标准是支持这样的,符合标准的编译器是不会报错的
[解决办法]
写法是没错,调用就有二义性了。
[解决办法]
典型的菱形继承,存在二义性。用虚继承可以解决这种ambiguity。
[解决办法]
你只是定义了一个对象,自然是没错。
一旦你用了z.a;或者z.s(),编译器就会报错啦。
[解决办法]
在Z中就有重复继承,估计你的对象成员调用少,没遇到错
[解决办法]
这个是说虚基类派生,如果不希望在一个派生类中存在某个公共基类的多个同名的成员变量,就使用虚基类。虚基类方法可以保证在任何一个存在公共基类的派生类中,不会存在一个以上的同名成员变量。
[解决办法]
调用一下就错了。

热点排行