On Tue, 11 Dec 2018 22:19:11 +0100 Vojtěch Čihák <vojtech.ci...@atlas.cz> wrote:
> Hi, > > why this code gives EInvalidCast at runtime (but compiles well):w > > program Project1; > {$mode objfpc}{$H+} > > uses > {$IFDEF UNIX}{$IFDEF UseCThreads} > cthreads, > {$ENDIF}{$ENDIF} > Classes, fgl > { you can add units after this }; > > {$R *.res} > type > TMyClass = class > procedure Output1; > end; > > TMyList = class (specialize TFPGObjectList<TMyClass>) > > end; > > TMyDescClass = class(TMyClass) > procedure Output2; > end; > > var MyList: TMyList; > MyClass: TMyClass; > > procedure TMyClass.Output1; > begin > WriteLn('Output1'); > end; > > procedure TMyDescClass.Output2; > begin > WriteLn('Output2'); > end; > > begin > MyList:=TMyList.Create(True); > MyClass:=TMyClass.Create; > MyList.Add(MyClass); > MyList[0].Output1; > TMyDescClass(MyList[0]); // EInvalidCast because MyClass is not TMyDescClass Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal