Hallo, ich versuche eine Klasse zu basteln die IEnumerator als generic implementiert und habe damit unter Delphi 2009 und 2010 ein Problem, nämlich dass IEnumerator<T> sich von IEnumerator ableitet und beide Interfaces eine GetCurrent Methode enthalten, einmal als function GetCurrent : TObject und einmal als GetCurrent : T
Als Beispiel habe ich eine kleine Klasse implementiert die im Prinzip nur einen Vektor darstellt:
Code:
type
TVectorClass = class(TObject)
private
fX,fY,fZ : Single;
public
property x : Single read fX;
property y : Single read fY;
property z : Single read fZ;
constructor Create(x,y,z : Single);
end;
Nun den entsprechenden IEnumerator dazu:
Code:
type
TVectorEnumerator = class(TInterfacedObject, IEnumerator<TVectorClass>)
private
F_ve : TVectorEnumerable;
iIndex : Integer;
public
constructor Create(rea : TVectorEnumerable);
function GetCurrent() : TVectorClass;
function MoveNext() : Boolean;
procedure Reset();
end;
Beim Versuch das zu compilieren erhält man einen E2003: Undeklarierter Bezeichner GetCurrent. Natürlich kann man auch nicht beide GetCurrent Methoden parallel implementieren über overload, da sie die selben Parameter (nämlich keine) verwenden... gibt es da irgendeine Lösung wie man einen generischen IEnumerator implementieren kann?
Ich habe einen alten thread gefunden in dem es wohl um das selbe Problem ging, aber da wurde scheinbar keine Lösung gefunden:
http://www.delphipraxis.net/126890-i...r-tobject.html
Wäre für jeden Tip dankbar!