读书人

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

发布时间: 2012-04-03 12:38:19 作者: rapoo

多重继承重名成员变量问题
各位大虾:
下面是我的程序,书上说可以这样写的,可是问题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



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

查查

读书人网 >C++

热点推荐