CDrawTextValue* dTextObjec=new CDrawTextValue();
-----------------------
this->m_usrCurrentObject=dTextObjec;
---------------------------
CDrawTextValue* cdt=dynamic_cast<CDrawTextValue*>(m_usrCurrentObject);
if(!cdt->GetBoundRect().PtInRect(point))
{
HideEditBox();
}
--
CDrawTextValue是CDrawObject的一个派生类,m_usrCurrentObject是一个CDrawObject*类型,为什么在转换时候无效呢?
谢谢回复!!!!

解决方案 »

  1.   

    派生类的有些方法和成员父类没有,所以dynamic_cast慎用为好
      

  2.   

    CDrawObject类中是否有虚函数 ?
      

  3.   

    dynamic_cast是将基类的指针强制转换为派生类的指针,转化失败的原因可能跟类的内部结构有关系,
    如果非要转换,可以试一下static_cast
      

  4.   

    lz能不能贴一下代码顺便说一下,基类到派生类转换只能用dynamic_cast 其他的转化方式都有一定的危险性.
      

  5.   

    能不转就不转,我的观点
    我们公司禁用dynamic_cast   - -
      

  6.   

    LZ能不能跟踪一下代码
    怀疑dTextObjec与cdt不相等,代码的其他部分有怀疑。另外:5楼说法正确,其他老兄