Главная страница
    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.048 c
15-1219600740
{RASkov}
2008-08-24 21:59
2008.10.12
Есть ли шанс?


2-1220523692
Layner
2008-09-04 14:21
2008.10.12
TDBChart - показ множества TLineSeries


1-1199993925
kilonet
2008-01-10 22:38
2008.10.12
Создание отчёта


15-1219373522
Slider007
2008-08-22 06:52
2008.10.12
С днем рождения ! 22 августа 2008 пятница


15-1219231255
TUser
2008-08-20 15:20
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский