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

c++ 一个小小的有关问题 请大侠们看上

2012-09-07 
c++ 一个小小的问题 请大侠们看下C/C++ code#include iostreamclass A{int m_nA}class B{int m_nB}c

c++ 一个小小的问题 请大侠们看下

C/C++ code
#include <iostream>class A{   int m_nA;};class B{   int m_nB;};class C:public A,public B{   int m_nC;};int main(){   C* pC=new C;   B* pB=dynamic_cast<B*> (pC);   A* pA=dynamic_cast<A*> (pC);   if(int(pC)==int(pB))   //pB  PC 不是指向同一地址么 怎么不相等???      cout<<"equal"<<endl;   else       cout<<"not equal" <<endl;   return 0;}          


[解决办法]
C/C++ code
class C:public B,public A{   int m_nC;};
[解决办法]
dynamic_cast<> 是类型向下转换。
也就是A* 转到 B* 或 C*.
B* 转到 C*。

你这个是向上转,B* pB = pC;就行了。

[解决办法]
*pC布局如下:
C/C++ code
m_nA //从A继承下来的  <---pA 和 pCm_nA //从B继承下来的  <--- pBm_nB //从B继承下来的m_nC //C中增加的
[解决办法]
看到多重继承发现
class C:public A,public B C的入口地址是A 那么有pc=pa
class C:public B,public A C的入口地址是B 那么有pc=pb

热点排行