Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1219403448
Amoeba
2008-08-22 15:10
2008.10.12
Жизненный цикл программиста


2-1220067889
Alexey
2008-08-30 07:44
2008.10.12
ISAPI и БД


15-1219428958
No_Dead
2008-08-22 22:15
2008.10.12
Регулярное выражение


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


2-1220289348
Age
2008-09-01 21:15
2008.10.12
Горячие клавиши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский