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
?