读书人

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

发布时间: 2012-09-07 10:38:15 作者: rapoo

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

读书人网 >C++

热点推荐