Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Вниз
Использование двух классов друг другом. Классы в разных модулях Найти похожие ветки
← →
Terasbetoni (2008-09-08 19:27) [0]Здравствуйте. Бывают такои случаи, когда в классе A есть поле типа B, и в классе B есть поле типа A (например, когда A - это система, а B - это элемент этой системы, который должен знать, какой системе он принадлежит). Тогда нужно применить такую запись:
type
B=class;
A=class
F:B;
//содержимое
end;
B=class
//содержимое
end;
А как это сделать, если A и B описаны в разных юнитах?
← →
Terasbetoni (2008-09-08 19:29) [1]Вернее вот так:
type
B=class;
A=class
F:B;
//содержимое
end;
B=class
F:A
//содержимое
end;
← →
KilkennyCat © (2008-09-08 19:42) [2]uses?
← →
Terasbetoni (2008-09-08 19:51) [3]really?
KilkennyCat © (08.09.08 19:42) [2]
поясните, пожалуйста
дополнительная информация: если в разделе uses в interface каждого модуля вписать имя другого модуля, то будет ошибка: Circular unit reference to "<element>"
← →
Palladin © (2008-09-08 20:07) [4]
> А как это сделать, если A и B описаны в разных юнитах?
никак
← →
Terasbetoni (2008-09-08 20:09) [5]Вы серьёзно?
← →
Terasbetoni (2008-09-08 20:15) [6]Сделал так
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.
Обошел. Но всё таки, это немного маразм.
← →
Palladin © (2008-09-08 20:18) [7]
> Terasbetoni (08.09.08 20:09) [5]
абсолютно
> Обошел. Но всё таки, это немного маразм.
это единственный выход, использовать общего родителя (TObject в данном случае)
← →
koha! (2008-09-08 20:37) [8]Я думаю обединение неме-спейс в одном
uses
My.New.namespace in "unit1.pas; unit2.pas";
← →
Palladin © (2008-09-08 20:44) [9]тебе нобелевку выдадут если в D7 откомпилируешь
← →
koha! (2008-09-08 20:52) [10]
> Palladin © (08.09.08 20:44) [9]
> тебе нобелевку выдадут если в D7 откомпилируешь
А ну да, не посмотрел.... ну может стоит задуматься, что бы перебраться на среду по новее....
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.065 c