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

多重继承重名成员变量有关问题

2012-04-03 
多重继承重名成员变量问题各位大虾:下面是我的程序,书上说可以这样写的,可是问题2处有个错误#include ios

多重继承重名成员变量问题
各位大虾:
下面是我的程序,书上说可以这样写的,可是问题2处有个错误

#include "iostream.h"

class A {
public: int ID;
A(){ID=0;}
};

class B: public A {
public: int ID;
B(){ID=1;}
};

class C: public A {
public: int ID;
C(){ID=2;}
};

class D:public B,public C {
public: int ID;
D(){ID=3;}

/*public: //int ID;
D(){B::ID=3;}*/ //问题1

};

void main()
{
A a;

cout<<"A.ID="<<a.ID<<endl;

B b,*p;
cout<<"B.ID="<<b.ID<<endl;

C c;
cout<<"C.ID="<<c.ID<<endl;
cout<<"C.A.Id="<<c.A::ID<<endl;

D d;
  // cout<<"D.C.Id="<<d.C::ID<<endl;

  cout<<"D.C.A.Id="<<d.C.A::ID<<endl; //问题2

 /* p=&d;
int k=p->A::ID;
  cout<<"D.C.A.Id="<<k<<endl;*/ //问题3
}

类D中的ID有多个来源,但是书上说可以用d.C.A::ID来访问,可是我试了不行,是为什么?谢谢.

[解决办法]
问题1: 参数相同的构造函数定义了两次,因此出错,只要改一下其中一个构造函数的参数即可

问题2: d.C.A::ID 修改为d.C::A::ID 或者是d.A::ID 即可

问题3: 运行没有问题啊!
[解决办法]
lz看什么书 还在搞iostream.h

赶快换一个新点的书籍吧.
[解决办法]
哪本书这么晕啊...
 你这个继承都出现菱形继承了.
class B:virtual public A
class C:virtual public A



[解决办法]
知道怎么解决菱形继承的问题吗?

查查

热点排行