TStringList に対する TDictionary の大幅なパフォーマンス向上について読んだ後、次のクラスを作成しました。
TAnsiStringList = class(TObjectDictionary<AnsiString,TObject>)
public
constructor Create(const OwnsObjects: Boolean = True); reintroduce;
destructor Destroy; override;
procedure Add(const AString: AnsiString);
procedure AddObject(const AString: AnsiString; AObject: TObject);
end;
コンストラクターを次のようにコーディングしました。
{ TAnsiStringList }
constructor TAnsiStringList.Create(const OwnsObjects: Boolean = True);
begin
if OwnsObjects then
inherited Create([doOwnsKeys,doOwnsValues])
else
inherited Create;
end;
...この TObjectDictionary コンストラクタが呼び出されることを期待しています。
constructor Create(Ownerships: TDictionaryOwnerships; ACapacity: Integer = 0); overload;
... Ownerships パラメータが指定された場合。Ownerships パラメーターが指定されていない場合、次の継承された TDictionary コンストラクターが呼び出されることを期待していました。
constructor Create(ACapacity: Integer = 0); overload;
コードはコンパイルして実行されますが、呼び出すと
inherited Create([doOwnsKeys,doOwnsValues]) I get the following error:
クラスの型キャストが無効です
誰かが私が間違っていることを見ていますか?これを行う適切な方法はありますか?
ティア