Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.10.2009, 01:43
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание Подводный камень в предварительном описании классов

Недавно пришлось использовать предварительное описание класса, столкнулся с таким вот подводным камнем:
Код:
type
  // Предварительное описание
  TTestClass = class;

  ...
  // Здесь описаны другие классы
  ...

  // Полное описание
  TTestClass = class(TObject)
  ...
  end;
Если написано так, то всё работает, однако, если разнести предварительное описание класса и его полное описание по разным секциям type , то компилятор не видит полного описания и выводит ошибки:
Цитата:
[Error] Unit1.pas(19): Type 'TTestClass' is not yet completely defined
[Error] Unit1.pas(25): Identifier redeclared: 'TTestClass'

Вот пример кода, вызывающего ошибку:
Код:
type
  // Предварительное описание
  TTestClass = class;

  // А вот здесь нам захотелось объявить к.л. переменную
var 
  x : integer;

type // <-- Уже другая секция type
  // Полное описание
  TTestClass = class(TObject)
  ...
  end;

Пишу это другим на будущее, просто это такая мелочь, вроде бы всё правильно написано - а компилятор ругается. А когда читал справку, не сразу заметил, что данная особенность там описана (т.к. просто смотрел на пример кода )

Цитата:
A forward declaration must be resolved by a defining declaration of the same class within the same type declaration section.
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:13.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025