Hi,

I'm a fpc newbie and currently playing around with generic classes.
Consider the following code:

===== test.pas =====
{$mode objfpc}
program Test;
type
   generic TGen<_T> = class
   public
   type
      TInner = class
         procedure Func;
      end;
   end;
   
   TInst = specialize TGen<Integer>;
   
procedure TGen.TInner.Func;
begin
end;

begin
end.
====================

When I compile this program with fpc 2.6.0 I get the following error:

% fpc test.pas
Free Pascal Compiler version 2.6.0 [2011/12/23] for i386
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling test.pas
test.pas(8,20) Error: Forward declaration not solved "TGen$LongInt.TInner.Func;"
test.pas(20) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted

It seems as if the line TInst = specialize TGen<Integer> is not
sufficient to specialize the inner class TInner of TGen<Integer>. What
do I have to do to get a correct specialization of the inner class?

Thanks in advance and sorry if this is a stupid question.

Frank
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to