Delphi2010 компилирует мой класс TObjectListEnumerator без ошибок, но DelphiXE3 дает ошибку компилятора: E2089: Invalid типажDelphiXE3 и недействительный родовая напечатанный
Что не так с этим?
TObjectListEnumerator<T> = class
private
fList : TObjectList;
fIndex : integer;
fMaxIndex : integer;
function GetCurrent : T;
public
constructor Create(List: TObjectList);
function MoveNext : Boolean;
property Current : T read GetCurrent;
end;
constructor TObjectListEnumerator<T>.Create(List: TObjectList);
begin
inherited Create;
fList := List;
fIndex := -1;
fMaxIndex := fList.Count-1;
end;
function TObjectListEnumerator<T>.MoveNext: Boolean;
begin
Inc(fIndex);
Result := not(fIndex > fMaxIndex);
end;
function TObjectListEnumerator<T>.GetCurrent: T;
begin
Result := T(fList[fIndex]); // <-- E2089: Invalid typecast
end;
Не совсем ответ на ваш вопрос, но так как вы используете генерик, почему бы вам не перейти от непараметризированного 'TObjectList' to 'TObjectList' от 'System.Generics.Collections'? Я предполагаю, что он автоматически поможет вам, так что вам не понадобится приведение к типу. –
Pateman
Спасибо, Патман, приятный намек! Если я использую TObjectList, мне не нужен TObjectListEnumerator . –
pKarelian