Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизВопрос по "вложенным" классам Найти похожие ветки
← →
amg_ (2006-11-17 16:24) [0]Например, есть класс
,
TClass1
{
private:
int F;
int Func2();
public:
int Func1();
...
}
необходимо создать вспомогательный Class2
, объекты которого будут использоваться только классом Class1, при этом в функциях Class2 были бы доступны private поля и функции Class1, т.е. было бы возможным
,
Class2::Func1()
{
int i;
i = (Class1??????)Func2();
...
}
можно конечно объект Class1 передать через конструктор Class2, но с private полями как быть?
← →
Плохиш © (2006-11-17 16:33) [1]Эт чё, у делфи синтаксис сменился?
← →
DVM © (2006-11-17 16:39) [2]
> но с private полями как быть?
Если их в один модуль поместить, то будут видны. Но только нехорошо это. Неправильно спланировано, раз такие обращения возможны. Если поле в private, и оно кому-то нужно, значит оно не private по идее.
← →
Array © (2006-11-17 16:49) [3]
> Эт чё, у делфи синтаксис сменился?
а как же по пятницам, вечером, он иногда меняеться в сторону ссссс... или ааассссммммаааа....
иногда даже становиться похож на java
← →
DVM © (2006-11-17 16:50) [4]А в военное время может меняться до C#
← →
novill © (2006-11-17 16:55) [5]Хы, я даже не сразу заметил что это не дельфи...
где-то я читал про "дружественные классы и функции", вам туда.
← →
DVM © (2006-11-17 16:56) [6]
> где-то я читал про "дружественные классы и функции", вам
> туда.
Ну вот в одном модуле они и будут дружественные
← →
novill © (2006-11-17 17:08) [7]> Ну вот в одном модуле они и будут дружественные
Ну, это в дельфях, а он неизвестно на чем пишет :)))
← →
amg_ (2006-11-17 17:14) [8]
> Неправильно спланировано, раз такие обращения возможны
Дело в том, что TClass2 нужен только для работы внутри класса TClass1
пишет :)))на CBuilder
где-то я читал про "дружественные классы и функции"
вопрос решился вложенным friend-классом, спасибо
← →
novill © (2006-11-17 17:27) [9]> > Неправильно спланировано, раз такие обращения возможны
>
> Дело в том, что TClass2 нужен только для работы внутри класса
> TClass1
Я все равно не понимаю.
Можешь пояснить, зачем именно вложенный класс? Почему не обойтись внутренними переменными и функциями? Если не слишком сложно...
← →
Плохиш © (2006-11-17 17:32) [10]
> пишет :)))на CBuilder
Оно пришло сюда. Это следует понимать так, что на специализированных форумах оно было очень далеко послано?
← →
novill © (2006-11-17 17:49) [11]> [10] Плохиш © (17.11.06 17:32)
>
> > пишет :)))на CBuilder
>
> Оно пришло сюда. Это следует понимать так, что на специализированных
> форумах оно было очень далеко послано?
Какая разница почему пришел, ведет себя культурно, больших глупостей не говорит. почему не помочь?
← →
amg_ (2006-11-17 18:47) [12]
> Можешь пояснить, зачем именно вложенный класс?
Изначально был некоторый кусок кода, который, в зависимости от условия (которых пока 2), должен выполняться в цикле(цикл "задавал" Dataset) или 1 раз (если Dataset не нужно было создавать) => вложенный класс ( по сути обертка для Dataset"a) - нужен для управления циклом.
← →
Kolan © (2006-11-17 20:10) [13]Незнаю для чего такое вообще может понадобится. Но вложенные клас можно сделать. Обнаружил это случайно переташив клас "на" класс в Together"е (BDS).
Код получаетсся такой(на Delphi, если надо могу и на С#):Class1 = class
type
Class2 = class
end;
end;
← →
Kolan © (2006-11-17 20:14) [14]> по сути обертка для Dataset"a
Вот и сделай обертку отдельно.
> который, в зависимости от условия
Тут проблеммы? if...
> если Dataset не нужно было создавать
Нужен создавай не нужен не создавай.if <smth> then
FObj := TObject.Create
else
...
А класс выглядит так:TClass = class
FObject: TObject;
end;
ЗЫ
Если ты это и имел ввиду, то это композиция..
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c