TListを継承して自作クラスのオブジェクトを要素に持つリストを作ろうとしています。

今引っかかっているのはDeleteメソッドです。

Deleteが呼ばれたときは自動的にその要素のオブジェクトをFreeしたいのですが、
DeleteはVirtualではないのでオーバーライドができません。

隠匿するという手もあるのですが、

var
list :TList;
begin
 list := TMyList.Create();

 listDeleteProc(list);
end;

の様な多様性を使用する局面で困る気がします。

と、ここまで書いて気づいたんですが、TListを引数とする奴が無断でアイテムを削除すると、
絶対に宙ぶらりんのポインタが発生しますね。
よってそう言う実装はあり得ないと。

解決しました。ありがとう。