我写了一个函数myDelete
做类似的事情delete
:
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
?