Опережающее рбъявление object'а

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Опережающее рбъявление object'а

Сообщение Jordan » 19.02.2015 09:47:00

Приветствую.

Код: Выделить всё
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;


Так работает.
Jordan
новенький
 
Сообщения: 13
Зарегистрирован: 19.12.2013 09:44:54

Re: Опережающее рбъявление object'а

Сообщение svk12 » 19.02.2015 13:25:15

Может быть, так:
Код: Выделить всё
type
  TList = Object;forward;
svk12
постоялец
 
Сообщения: 407
Зарегистрирован: 09.06.2008 18:42:47

Re: Опережающее рбъявление object'а

Сообщение Дож » 19.02.2015 13:37:39

Нет, так не получится. Нарушить порядок объявления типов можно только для типизированных указателей, class'ов и, вероятно, interface'ов.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru
cron