Innego rozwiązania raczej nie ma sensu szukać, bo forwardowanie właśnie do tego celu istnieje, aby móc skonkretyzować wszystkie typy danych w deklaracjach klas; Na siłę można by uniknąć forwardowania, zastosować ogólny typ TObject i wykonywać każdorazowe rzutowanie na właściwe klasy w definicjach metod, ale to kompletnie sensu nie ma;
Przy okazji - widzę, że Delphi nadal nie wspiera forwardowania klas przy wielu sekcjach Type; Z dokumentacji wynika, że aby poprawnie klasy były zadeklarowane, muszą być w jednej sekcji Type; Na szczęście FPC wspiera taką funkcję i można śmiało każdą deklarację typu poprzedzać wspomnianym słówkiem kluczowym:
type
TKlasaDwa = class;
type
TKlasaJeden = class
private
FObj: TKlasaDwa;
public
{..}
end;
type
TKlasaDwa = class
private
FObj: TKlasaJeden;
public
{..}
end;
Ja jestem zwolennikiem zapisu deklaracji każdej klasy w osobnej sekcji i zachowanie FPC bardziej mi odpowiada; Ale to tak w ramach ciekawostki, bo problem został już rozwiązany.