Вниз
Скачать: CL | DM;

Использование двух классов друг другом. Классы в разных модулях   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
15-1219385138
vajo
2008-08-22 10:05
2008.10.12
Про активацию Windows XP


2-1220607629
lordalex
2008-09-05 13:40
2008.10.12
Старый добрый Excel


6-1193739381
Rav
2007-10-30 13:16
2008.10.12
Как правильно остановить IdTcpServer


2-1220425933
Сергей
2008-09-03 11:12
2008.10.12
Как отключить выбор пункта по первым буквам в ComboBox?


4-1197478143
DeBUGger13
2007-12-12 19:49
2008.10.12
Cannon PS (pro1) SDK




   Наверх