Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

Двойное объявление классов   Найти похожие ветки 

 
p314   (2006-09-12 16:45) [0]

Смотрю чужой исходный код, в нем вот так сделано:

type
...
 TMyTimer = class;
// другие классы
...
 TMyTimer = class(TObject)
 private
   FInterval: LongWord;
...
...


Я не пойму, зачем это сделано?


 
default ©   (2006-09-12 16:48) [1]

смотри в хелпе по ключу "forward declaration"


 
Сергей М. ©   (2006-09-12 16:48) [2]

Это предварительное объявление.

Оно необходимо, например, в таких случаях:

 TMyClass = class;
...

 TMyOtherClass = class
..
 FMyClass: TMyClass;
..
 end;

..

TMyClass = class
..
  FMyOtherClass: TMyOtherClass;
..
 end;


 
p314   (2006-09-12 16:59) [3]

Ок, спасибо! Я так понял, что это применяется, если эти классы содеражат "один другого", но в моем случае картина мне все равно непонятна.

type
...
TMyTimer = class;

TOtherClss = class
...
MyTimer1: TMyTimer;
end;
...
TMyTimer = class(TObject)
private
  FInterval: LongWord;
//Тут нет TOtherClss!
...
...


Т.е. в моем случае в полном объявлении класса TMyTimer, он не ссылается на TOtherClss. Что это такое?


 
Сергей М. ©   (2006-09-12 17:01) [4]


> Я так понял, что это применяется, если эти классы содеражат
> "один другого"


Не только, но и в том числе.


 
default ©   (2006-09-12 17:02) [5]


> type
> ...
> TMyTimer = class;
>
> TOtherClss = class
> ...
> MyTimer1: TMyTimer;
> end;
> ...
> TMyTimer = class(TObject)
> private
>   FInterval: LongWord;
> //Тут нет TOtherClss!
> ...
> ...


 
Наиль ©   (2006-09-12 17:02) [6]

Попробуй убрать

TMyTimer = class;
TOtherClss = class;

Если будет работать, значит не нужен.


 
p314   (2006-09-12 17:43) [7]

Да, я ради эксперемента решил перетащить полное объявление класса на место предварительного, а предварительное убрать. И... работает, ну во всяком случае все нормально компилируется и на первый взгляд, всё в норме. Т.е. в данном случае я так и не понял смысла в таком действии, просто не желание первым классом писать этот класс? Не знаю... Как выше сказали, что предварительные объявления делаются не только для этого, а для чего ещё?


 
Jack128_From_Tuapse   (2006-09-12 18:41) [8]


> Как выше сказали, что предварительные объявления делаются
> не только для этого, а для чего ещё?

для того чтоб не парится.  Проще сразу описать все классы подобным образом, чем повторять эту процедуру несколько раз, когда это становится необходимо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.02 c
2-1157703974
P2P
2006-09-08 12:26
2006.10.01
Помогите перевести конструкцию с C++


3-1154037201
Адиль
2006-07-28 01:53
2006.10.01
Нереляционные базы данных


2-1158056617
dest81
2006-09-12 14:23
2006.10.01
*.odb


3-1154225520
Antoxa2005
2006-07-30 06:12
2006.10.01
Подскажите, а можно ли использовать транзакции при работе ч-зODBC


1-1156165096
laurely
2006-08-21 16:58
2006.10.01
Работа с тонким клиентом





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