- Код: Выделить всё
- type
 TList = Object;
 PWidget = ^TWidget;
 TWidget = Object
 Next : PWidget;
 Prev : PWidget;
 Child: TList;
 end;
 PList = ^TList;
 TList = Object // Duplicate identifier "TList"
 //Forward type not resolved "TList"
 Head: PWidget;
 Tail: PWidget;
 procedure Init();
 procedure Append(Elem: PWidget);
 procedure Free();
 procedure Remove(Elem: PWidget);
 end;
Если заменить object на class, опережающее объявление работает. С object'ом нет.
Добавлено спустя 20 минут 49 секунд:
Методом Тыково. Проблему решил.
- Код: Выделить всё
- type
 PWidget = ^TWidget;
 
 PList = ^TList;
 TList = Object
 Head: PWidget;
 Tail: PWidget;
 procedure Init();
 procedure Append(Elem: PWidget);
 procedure Free();
 procedure Remove(Elem: PWidget);
 end;
 
 TWidget = Object
 Next : PWidget;
 Prev : PWidget;
 Child: TList;
 end;
Так работает.



