Schön, das ging ja flott
Was mir erst durch deinen
QC-Titel aufgefallen ist: Das ist ja tatsächlich nur bei Boolean so! Integer, String oder Record nicht! Bei einem statischen Array bin ich mir nicht sicher: Sowohl der Compiler als auch die Code Completion sehen die Array-Referenz als einen ziemlich schrägen Typ an:
[dcc64 Fehler] BaseClass.pas(19): E2010 Inkompatible Typen: 'BaseClass.TBaseClass<BaseClass.TBaseClass<T>.T>.: 2' und 'array[0..0] of Integer'
bei folgendem Code:
Delphi-Quellcode:
unit BaseClass;
interface
type TBaseClass<T:
class> =
class abstract
protected var
someField:
Array[0..0]
of Integer;
public
procedure doStuff();
virtual;
final;
end;
implementation
procedure TBaseClass<T>.doStuff();
const
someConstant:
Array[0..0]
of Integer = (5);
begin
someField := someConstant;
end;
end.
Das scheint aber ein ganz anderes Problem zu sein, oder? Denn hier kann er das konkrete Problem direkt anstreichen und es ist hier die BaseClass-
Unit. Ist die Klasse jedenfalls nicht generisch, dann haben sowohl Compiler als auch Code Completion kein Problem.