Hallo,
und schon wieder gibts ein Problem mit Generics. Ich hatte mir eine Klasse erstellt, die so ziemlich alles mit Arrays anstellen kann, was ich brauche. Diese Klasse habe ich nur mit statischen Klassen-Methoden gefüllt, wobei die Klasse selbst dann generisch war. Hier ein vereinfachter Code:
Delphi-Quellcode:
type
TStaticClassA = class
public
function GenericLow<T>(const A: TArray<T>): Integer;
end;
TStaticClassB<T> = class
public
function GenericLow(const A: TArray<T>): Integer;
end;
// =============================
{ TStaticClassA }
function TStaticClassA.GenericLow<T>(const A: TArray<T>): Integer;
begin
Result := Low(A);
end;
{ TStaticClassB<T> }
function TStaticClassB<T>.GenericLow(const A: TArray<T>): Integer;
begin
Result := Low(A); // <- [DCC Fehler] Unit1.pas(45): E2008 Inkompatible Typen
end;
Ich habe im Quelltext die Zeile markiert und mit einem Kommentar versehen, in der der Compiler einen Fehler meldet. Meine Frage ist,
warum geht das denn bitte nicht? Es ist doch an sich nichts anderes, oder habe ich da was nicht verstanden.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)