-1
我已經寫在做類似的事情功能myDelete
到delete
:如何自定義C++刪除
template<typename T>
void myDelete(T* p)
{
/* do something */
p->~T();
free(p);
}
但當參數p
是一個指向基類(子對象),有錯誤時,調用free
。
測試代碼:
struct base0
{
int _;
virtual ~base0() {}
};
struct base1
{
int _;
virtual ~base1() {}
}
struct dev : public base0, public base1
{
int _;
virtual ~dev() {}
}
base1* p = new dev();
myDelete(p); // error, because p is adjust by base1
如何寫函數myDelete
?