<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace">Hi all,</div><div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">I am having trouble with the following code:</div><div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default"><div class="gmail_default"><font face="courier new, monospace">  generic TVector<T> = class</font></div><div class="gmail_default"><font face="courier new, monospace">  type</font></div><div class="gmail_default"><font face="courier new, monospace">    DataType = array of T;</font></div><div class="gmail_default"><font face="courier new, monospace">  private</font></div><div class="gmail_default"><font face="courier new, monospace">    //...</font></div><div class="gmail_default"><span style="font-family:'courier new',monospace">  protected</span><br></div><div class="gmail_default"><span style="font-family:'courier new',monospace">    //...</span></div><div class="gmail_default"><span style="font-family:'courier new',monospace">  public</span><br></div><div class="gmail_default"><span style="font-family:'courier new',monospace">    //...</span></div><div class="gmail_default"><span style="font-family:'courier new',monospace">  end;</span><br></div><div class="gmail_default"><span style="font-family:'courier new',monospace"><br></span></div><div class="gmail_default"><div class="gmail_default"><font face="courier new, monospace">  generic TSortableVector<T> = class(specialize TVector<T>)</font></div><div class="gmail_default"><font face="courier new, monospace">  protected</font></div><div class="gmail_default"><font face="courier new, monospace">    function OnSort(v1, v2: T): Integer; virtual; abstract;</font></div><div class="gmail_default"><span style="font-family:'courier new',monospace">    //...</span><br></div><div class="gmail_default"><span style="font-family:'courier new',monospace">  public</span><br></div><div class="gmail_default"><span style="font-family:'courier new',monospace">    procedure Sort(Reversed: Boolean = False; OldOrder: PIntegerDynArray = nil);</span></div><div class="gmail_default"><div class="gmail_default"><span style="font-family:'courier new',monospace">    //...</span></div></div><div class="gmail_default"><font face="courier new, monospace">  end;</font></div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace">  TIntegerVector = class(specialize TSortableVector<Integer>)</font></div><div class="gmail_default"><font face="courier new, monospace"><div class="gmail_default">  protected</div><div class="gmail_default">    function OnSort(v1, v2: Integer): Integer; override;  </div></font></div><div class="gmail_default"><font face="courier new, monospace">  end;</font></div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace">The error I got is: </font></div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"><div class="gmail_default">Error: Forward declaration not solved "TIntegerVector.TSortableVector$LongInt.OnSort(LongInt,LongInt):LongInt;"</div><div><br></div><div>The original code of vector is here:</div><div><br></div><div><a href="https://github.com/xrfang/fpcollection/blob/master/src/units/vector.pas" target="_blank">https://github.com/xrfang/fpcollection/blob/master/src/units/vector.pas</a><br></div><div><br></div><div>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. </div><div><br></div><div>I am running FPC 2.6.4 on Linux x64.</div><div><br></div><div>Thanks!</div><div><br></div><div>Xiangrong</div></font></div></div></div></div>