我继承了一个不可更改的C结构,其中包含指向(alloc'd)内存的指针。
typedef struct {
int id;
int * val;
} T;
我想在这些对象上使用new和delete,我想知道是否可以在全局范围内重载delete。我首先没有选择重写struct / class的选项。麻烦的是我找不到正确的语法。这就是我所拥有的 - 它编译但很明显失败,因为该函数应用于所有删除调用:
void operator delete(void*p) throw() {
T * t = reinterpret_cast<T*>(p);
free(p->val);
}
我是否尝试过不可能的事情?我已经读过,操作符删除重载不一定是成员函数,但这只是提供了为所有指针编写泛型删除的方法吗?
答案 0 :(得分:3)
即
class Sane_T
{
public:
Sane_T()
{
// do stuff
}
~Sane_T()
{
// Now cleanup..
if (_inst.val)
free(_inst.val);
}
private:
T _inst;
};