struct CBase
{
virtual int aa(){}=0;
}class CA : public CBase
{
virtual int aa(){return 1;};
}dll导出函数 CBase* CreateCA(){return (CBase*)new CA};调用:CBase *aa = CreateCA();请问,这对象怎么删除,详细代码,谢谢
{
virtual int aa(){}=0;
}class CA : public CBase
{
virtual int aa(){return 1;};
}dll导出函数 CBase* CreateCA(){return (CBase*)new CA};调用:CBase *aa = CreateCA();请问,这对象怎么删除,详细代码,谢谢
不需要这样子吗:eleaseDA(CBase* p){if(p)delete (CA*)p;}
delete p 和 delete (CA*)p有没有区别,谢谢
这个要看你传进去的p是什么类型的,如果是CA*类型的当然需要delete(CA*)p转换一下了。
DLL里new出的对象,要在DLL里提供相应的接口delete
提供一个Release接口.你看看COM都是这样做的.struct CBase
{
virtual int aa(){}=0;
virtual void Release()=0;
} class CA : public CBase
{
virtual int aa(){return 1;};
virtual void Release(){ delete this;}
} //dll导出函数 CBase* CreateCA(){return (CBase*)new CA}; CBase* pInstance = CreateCA();
pInstance->Release();