| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Прототип Класса |
| Автор: rubenhak 11.2.2006, 14:15 | ||
Люди посмотриет следующий код.
он работающий, но если я класс B перетаскиваю в другой унит. компилятор ошибку дает. кто может помочь? заранее спасибо. |
| Автор: Yanis 11.2.2006, 14:30 |
| Если ты переносишь из Unit1 описание класса B в Unit2, то в Unit2 у тебя должен быть подключён Unit1 в которм описан класс A. Так ли это в твоём случае? Добавлено @ 14:31 И неужели так сложно написать ошибку которую выдаёт компилятор? |
| Автор: volvo877 11.2.2006, 14:37 |
| Yanis, это не тот случай... Тут будет Circullar Unit Reference - для определения типа A нужно определение B, и наоборот... |
| Автор: rubenhak 11.2.2006, 15:36 |
| ладно, так и быть дословно прокоментируем ошибку volvo, правильно сказал. volvo - да, но в случае одного фаила - работает, кто знает как разделить на 2 фаила , чтоб в одном был class A, а во втором class B ? в этом случае ( в случае разных юнитов ) прототип класса "B = class;" не работает. |
| Автор: volvo877 11.2.2006, 15:42 |
| Никак... Если в Type появляется B = class, то значит в этой же секции Type должно быть и определение класса B... У тебя так не получится. А избежать Circullar Unit Reference можно только , если подключать модули один к другому в разделе Implementation (тогда зацикливание "разруливается" компилятором)... У тебя проблема (при данном подходе) - нерешаема. Опиши свою задачу, возможно есть другой способ, или оставляй эти косвенно-рекурсивные классы в одном модуле... |
| Автор: rubenhak 11.2.2006, 16:28 |
| да это все я знаю , просто хотелось что-то по красивее а нет каких-то линкерных директив чтоб решить? |
| Автор: volvo877 11.2.2006, 16:39 |
| А линкер-то тут при чем? У тебя компилятор не пропускает такое, до линкера дело не доходит... |
| Автор: rubenhak 11.2.2006, 16:48 |
| я имел ввиду кое-какая директива, которая дала бы понять что етот класс есть , но в другом месте. это же решено в C++.... |