1

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:

クラスの型キャストが無効です

誰かが私が間違っていることを見ていますか?これを行う適切な方法はありますか?

ティア

4

1 に答える 1