Форум: "Начинающим";
Текущий архив: 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.012 c