我的两个类
class AAA
{
public:
//....
};class BBB:virtual public AAA
{
public:
BOOL res;
}在程序中
AAA *aaa;//aaa是个全局指针
//...
aaa=new BBB;
//...
在下一段程序中,我想通过aaa来访问BBB的对象中的res;
我这样:BBB *bbb=(BBB *)(aaa);通不过编译。
我这样:BBB *bbb=(BBB *)(LPVOID)(aaa);似乎访问出来的数据不正确。
请问,应该怎么样才能正确访问?

解决方案 »

  1.   

    从父类往子类转涉及到RTTI的问题,要用dynamic_cast才行。
      

  2.   

    类系中没有多重继承的话(而且多个父类又派生自同一个基类),就不要采用虚继承,没必要,效率也影响;
    这种情况dynamic_cast不行的,返回null
      

  3.   

    BBB *bbb=reinterpret_cast <B*>(aaa)
      

  4.   

    如果楼主的设计中真的有多重继承,且多个父类又派生自同一个基类这种情况,建议考虑别的方式实现。
    比如组合关系:B类有一个A类成员对象,即常说的has a关系,而非is a关系(继承)
    (不要过多依赖面向对象中的继承特性,有时会增加代码的耦合度,个人经验,仅供参考,呵呵)
      

  5.   


    reinterpret_cast一般用于整数值类型与指针类型的转换,这个也不行的