2

関数に渡したポインターをこの関数内で削除できないことを保証したい (コンパイラーがそのような関数の処理でエラーを生成することを意味します)。以下が元の状態です。

void foo(Bar *bar) { delete bar; }

今、私はいくつかの方法を試しましたが失敗しました。

void foo(Bar *bar) { delete bar; }
void foo(const Bar * const bar) { delete bar; } { delete bar; }
template <typename T> void foo(const T &t) { delete t; } // calling foo(bar);

知りたいのですが、ポインターの削除を禁止する方法はありますか?それが不可能な場合、なぜそれが作成されたのですか?

4

2 に答える 2