Hallo zusammen.
Ich möchte mir eine generische Klasse für einen einfachen Ringspeicher schreiben. Dazu verwalte ich (genau wie
TList<T>
) die Elemente des Speichers in einem
array of T
. Das compiliert soweit ganz gut, bis ich die Add-Funktion implementieren will. Dann bekomme ich den Fehler:
Code:
E2571 Typparameter 'T' hat keine Klassen- oder Interface-Einschränkung
Was soll mir das sagen und warum kann ich es nicht genau so machen wie bei TList. Hier mal der auf nötigste zusammengestrichene Code:
Delphi-Quellcode:
type
TRing<T> = class(TEnumerable<T>)
private
FItems: array of T;
{...}
public
procedure Add(const Value: T);
{...}
end;
{...}
procedure TRing<T>.Add(const Value: T);
var
Pos: Integer;
begin
Pos := (Current + 1) mod Size;
FItems[Pos] := T; // <- hier meckert er
end;
Die Add-Methode einer einfachen Liste scheint aber genau so zu funktionieren. Also .. was tun?