我创建了一个抽象的基类,然后派生出一个子类,NEW了一个子类后,将子类强制转化成基类的类型,然后不能DELETE掉,估计类型不对,再强制转换成子类就报错,为什么会这样列?要怎么转换啊?!

解决方案 »

  1.   

    看《深入浅出mfc 2e》子类强制转换成父类后会损失数据!再转换成子类, 逻辑不通, 当然报错了, 你目的是做什么呢? 换个方法
      

  2.   

    over-load those destruct function
    like thisclass objedt
    {
    public:
    object()
    virtual ~object
    };class cmdtarget : public object
    {
    public:
    cmdtarget();
    virtual ~cmdtarget();
    }
      

  3.   

    我用工厂方法返回一个已强制转换为基类的子类的指针,调用完方法后,要DELETE掉,但此时这个指针的类型是基类的,要造型为子类才能DELETE掉啊!
      

  4.   

    first your base's destruct must be virtual
    casting from a derived point to base class point is safe 
    but casting from base point to derived class's point is not .u should use dynamic_cast operator like follow:derived* p=dynamic_cast<derived*>(pbase);
    if(p!=NULL)
      do your operator
    else 
      con't cast;