Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: 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 вся ветка

Текущий архив: 2008.10.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1220106974
Alral
2008-08-30 18:36
2008.10.12
Функция Recv и PChar


2-1220089058
Ivolg
2008-08-30 13:37
2008.10.12
Подключение dll на C++ Builder к проекту на Delphi


2-1220417936
TRSteep
2008-09-03 08:58
2008.10.12
Отправка почты


2-1220458117
Fok
2008-09-03 20:08
2008.10.12
Как удалить последний символ в строке?


15-1219565522
Kostafey
2008-08-24 12:12
2008.10.12
С днем рождения ! 23 августа