Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Typisierte lokale Konstante in Generic-Unterklasse - Compiler-Bug?

  Alt 3. Jan 2014, 17:26
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.

Geändert von Der schöne Günther ( 3. Jan 2014 um 17:28 Uhr)
  Mit Zitat antworten Zitat