![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование двух классов друг другом. Классы в разных модулях [D7, WinXP]
Terasbetoni © (2008-09-08 19:27:00)Здравствуйте. Бывают такои случаи, когда в классе A есть поле типа B, и в классе B есть поле типа A (например, когда A - это система, а B - это элемент этой системы, который должен знать, какой системе он принадлежит). Тогда нужно применить такую запись:
type
B=class;
A=class
F:B;
//содержимое
end;
B=class
//содержимое
end;
А как это сделать, если A и B описаны в разных юнитах?
koha! (2008-09-08 20:52:00) [1]
> Palladin © (08.09.08 20:44) [9]
> тебе нобелевку выдадут если в D7 откомпилируешь
А ну да, не посмотрел.... ну может стоит задуматься, что бы перебраться на среду по новее....
Palladin (2008-09-08 20:44:00) [2]тебе нобелевку выдадут если в D7 откомпилируешь
koha! (2008-09-08 20:37:00) [3]Я думаю обединение неме-спейс в одном
uses
My.New.namespace in 'unit1.pas; unit2.pas';
Palladin (2008-09-08 20:18:00) [4]
> Terasbetoni (08.09.08 20:09) [5]
абсолютно
> Обошел. Но всё таки, это немного маразм.
это единственный выход, использовать общего родителя (TObject в данном случае)
Terasbetoni (2008-09-08 20:15:00) [5]Сделал так
unit Unit1;
interface
uses Unit2;
type
TClass1=class
F:TClass2;
end;
implementation
end.
Unit2;
interface
type
TClass2=class
F:TObject;
end;
implementation
uses Unit1;
// сдесь использую преобразование F as TClass1
end.
Обошел. Но всё таки, это немного маразм.
Terasbetoni (2008-09-08 20:09:00) [6]Вы серьёзно?
Palladin (2008-09-08 20:07:00) [7]
> А как это сделать, если A и B описаны в разных юнитах?
никак
Terasbetoni (2008-09-08 19:51:00) [8]really?
KilkennyCat © (08.09.08 19:42) [2]
поясните, пожалуйста
дополнительная информация: если в разделе uses в interface каждого модуля вписать имя другого модуля, то будет ошибка: Circular unit reference to '<element>'
KilkennyCat (2008-09-08 19:42:00) [9]uses?
Terasbetoni (2008-09-08 19:29:00) [10]Вернее вот так:
type
B=class;
A=class
F:B;
//содержимое
end;
B=class
F:A
//содержимое
end;