Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прототип Класса 
:(
    Опции темы
rubenhak
Дата 11.2.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



Люди посмотриет следующий код.

Код

type
  B = class;

  A = class
  public
    test : B;
  end;


  B = class
  public
    test : A;
  end;


он работающий, но если я класс B перетаскиваю в другой унит. компилятор ошибку дает.
кто может помочь?

заранее спасибо.
PM WWW MSN   Вверх
Yanis
Дата 11.2.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Если ты переносишь из Unit1 описание класса B в Unit2, то в Unit2 у тебя должен быть подключён Unit1 в которм описан класс A. Так ли это в твоём случае?
Добавлено @ 14:31
И неужели так сложно написать ошибку которую выдаёт компилятор? smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
volvo877
Дата 11.2.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Yanis,
это не тот случай... Тут будет Circullar Unit Reference - для определения типа A нужно определение B, и наоборот...
PM MAIL   Вверх
rubenhak
Дата 11.2.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



ладно, так и быть дословно прокоментируем ошибку smile
volvo, правильно сказал.

volvo - да, но в случае одного фаила - работает,
кто знает как разделить на 2 фаила , чтоб в одном был class A, а во втором class B ?
в этом случае ( в случае разных юнитов ) прототип класса "B = class;" не работает.

PM WWW MSN   Вверх
volvo877
Дата 11.2.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(rubenhak @ 11.2.2006, 14:36 Найти цитируемый пост)
как разделить на 2 фаила

Никак... Если в Type появляется B = class, то значит в этой же секции Type должно быть и определение класса B... У тебя так не получится.

А избежать Circullar Unit Reference можно только , если подключать модули один к другому в разделе Implementation (тогда зацикливание "разруливается" компилятором)... У тебя проблема (при данном подходе) - нерешаема. Опиши свою задачу, возможно есть другой способ, или оставляй эти косвенно-рекурсивные классы в одном модуле...
PM MAIL   Вверх
rubenhak
Дата 11.2.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



да это все я знаю , просто хотелось что-то по красивее smile
а нет каких-то линкерных директив чтоб решить?

PM WWW MSN   Вверх
volvo877
Дата 11.2.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



А линкер-то тут при чем? У тебя компилятор не пропускает такое, до линкера дело не доходит...
PM MAIL   Вверх
rubenhak
Дата 11.2.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



я имел ввиду кое-какая директива, которая дала бы понять что етот класс есть , но в другом месте.
это же решено в C++....
PM WWW MSN   Вверх
Yanis
Дата 12.2.2006, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(rubenhak @ 11.2.2006, 16:48 Найти цитируемый пост)
я имел ввиду кое-какая директива, которая дала бы понять что етот класс есть , но в другом месте.
это же решено в C++....

Слава богу, что такой директивы нету в Pascal/Delphi.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0689 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.