Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
ВнизCircular class reference Найти похожие ветки
← →
oomneeq (2001-12-14 21:26) [0]Такая проблема
T1=class
F:T2;
end;
T2=class
F:T1;
end;
решается так
T2=class;
T1=class
F:T2;
end;
T2=class
F:T1;
end;
Вопрос: Есть ли решение для случая, когда классы T1 и T2
расположены в разных unit"ах?
У меня чего-то не получается :<
← →
Иван Шихалев (2001-12-14 22:03) [1]Нет, конечно. А зачем?
Можно лишь объявить предка T2 в области видимости для T1.
← →
oomneeq (2001-12-17 12:00) [2]Вопрос вобщето не праздный.
Хочется, чтоб классы имели взаимоссылки друг на друга, но по некоторым соображениям не могут быть помещены в один модуль - они есть TForm.
Пока я это делаю через посредника - некий класс, который знает обоих,
а каждый из них знает его. Через этого посредника они и доступаются друг к дружке.
Подбросьте идейку непосредственного знакомства вышеуказанных классов.
Ну хоть намекните куды копать :)
← →
Fellomena (2001-12-17 12:36) [3]Не могу сказать точно как в Delphi это можно сделать, но в C++ есть такое понятие как дружественные классы,
т.е. классы, объявленные как дружественные имеют доступ ко всем полям (методам ?) другого класса, даже к тем, что
в Privat секции описанны. Я знаю, что в Delphi все классы, расположенные в одном юните считаются дружественными, но вот как
сделать тоже для разных юнитов ???
← →
Иван Шихалев (2001-12-17 19:17) [4]Проблема в том, что классы должны быть описаны в секции
interface
(кстати, доступ к приватным полям, вроде б, и не обсуждался), а циклические ссылки в этой секции категорически запрещены. Наиболее корректный способ:
unit Unit1;
interface
uses
<стандартный набор модулей>;
type
TForm1 = class(TForm)
fldForm2 :TForm;
procedure doSomeThing;
end;
implementation
uses
Unit2;
procedure TForm1.doSomeThing;
begin
(fldForm2 as TForm2).TForm2OnlyProperty := AnyValue;
fldForm2.TFormProperty := AnotherValue
end;
end.
И совершенно аналогично - Unit2, только единичку с двоечкой местами поменять.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c