<p>Am 05.09.2014 16:03 schrieb "Xiangrong Fang" <<a href="mailto:xrfang@gmail.com">xrfang@gmail.com</a>>:<br>
><br>
> Hi all,<br>
><br>
> I am having trouble with the following code:<br>
><br>
>   generic TVector<T> = class<br>
>   type<br>
>     DataType = array of T;<br>
>   private<br>
>     //...<br>
>   protected<br>
>     //...<br>
>   public<br>
>     //...<br>
>   end;<br>
><br>
>   generic TSortableVector<T> = class(specialize TVector<T>)<br>
>   protected<br>
>     function OnSort(v1, v2: T): Integer; virtual; abstract;<br>
>     //...<br>
>   public<br>
>     procedure Sort(Reversed: Boolean = False; OldOrder: PIntegerDynArray = nil);<br>
>     //...<br>
>   end;<br>
><br>
>   TIntegerVector = class(specialize TSortableVector<Integer>)<br>
>   protected<br>
>     function OnSort(v1, v2: Integer): Integer; override;  <br>
>   end;<br>
><br>
> The error I got is: <br>
><br>
> Error: Forward declaration not solved "TIntegerVector.TSortableVector$LongInt.OnSort(LongInt,LongInt):LongInt;"<br>
><br>
> The original code of vector is here:<br>
><br>
> <a href="https://github.com/xrfang/fpcollection/blob/master/src/units/vector.pas">https://github.com/xrfang/fpcollection/blob/master/src/units/vector.pas</a><br>
><br>
> I am having trouble with the original code while specializing TVector with a Record type that does not have comparison operators.  So I decide to make OnSort() abstract, and add it whenever needed. <br>
><br>
> I am running FPC 2.6.4 on Linux x64.</p>
<p>Please test first with 2.7.1. If it does work there, then you'll need to wait till it is released, otherwise you can open a bug report (with a simplified example please, just the virtual method should be enough).</p>
<p>Regards,<br>
Sven</p>