Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по "вложенным" классам


amg_ ©   (2006-11-17 16:24:00) 

Например, есть класс

TClass1
{
 private:
   int F;
   int Func2();
 public:
   int Func1();
   ...
}
,
необходимо создать вспомогательный Class2

, объекты которого будут использоваться только классом Class1, при этом  в функциях Class2 были бы доступны private поля и функции Class1, т.е. было бы возможным

Class2::Func1()
{
 int i;
 i = (Class1??????)Func2();
 ...
}
,
можно конечно объект Class1 передать через конструктор Class2, но с private полями как быть?


Kolan   (2006-11-17 20:14:00) [1]

> по сути обертка для Dataset'a

Вот и сделай обертку отдельно.


> который, в зависимости от условия

Тут проблеммы? if...


> если Dataset не нужно было создавать

Нужен создавай не нужен не создавай.
if <smth> then
 FObj := TObject.Create
else
 ...


А класс выглядит так:
TClass = class
 FObject: TObject;
end;


ЗЫ
 Если ты это и имел ввиду, то это композиция..


Kolan   (2006-11-17 20:10:00) [2]

Незнаю для чего такое вообще может понадобится. Но вложенные клас можно сделать. Обнаружил это случайно переташив клас "на" класс в Together'е (BDS).
Код получаетсся такой(на Delphi, если надо могу и на С#):
 Class1 = class
 type
   Class2 = class
   end;
 end;


amg_   (2006-11-17 18:47:00) [3]


> Можешь пояснить, зачем именно вложенный класс?

Изначально  был некоторый кусок кода, который, в зависимости от условия (которых пока 2),  должен выполняться в цикле(цикл "задавал" Dataset)  или 1 раз (если Dataset не нужно было создавать)   =>   вложенный класс ( по сути обертка для Dataset'a) - нужен для управленияциклом.


novill   (2006-11-17 17:49:00) [4]

> [10] Плохиш ©   (17.11.06 17:32)
>
> > пишет :)))на CBuilder
>
> Оно пришло сюда. Это следует понимать так, что на специализированных
> форумах оно было очень далеко послано?


Какая разница почему пришел, ведет себя культурно, больших глупостей не говорит. почему не помочь?


Плохиш   (2006-11-17 17:32:00) [5]


> пишет :)))на CBuilder

Оно пришло сюда. Это следует понимать так, что на специализированных форумах оно было очень далеко послано?


novill   (2006-11-17 17:27:00) [6]

> > Неправильно спланировано, раз такие обращения возможны
>
> Дело в том, что TClass2 нужен только для работы внутри класса
> TClass1


Я все равно не понимаю.
Можешь пояснить, зачем именно вложенный класс? Почему не обойтись внутренними переменными и функциями? Если не слишком сложно...


amg_   (2006-11-17 17:14:00) [7]


> Неправильно спланировано, раз такие обращения возможны

Дело в том, что TClass2 нужен только для работы внутри класса TClass1

пишет :)))на CBuilder
где-то я читал про "дружественные классы и функции"
вопрос решился вложенным friend-классом, спасибо


novill   (2006-11-17 17:08:00) [8]

> Ну вот в одном модуле они и будут дружественные

Ну, это в дельфях, а он неизвестно на чем пишет :)))


DVM   (2006-11-17 16:56:00) [9]


> где-то я читал про "дружественные классы и функции", вам
> туда.

Ну вот в одном модуле они и будут дружественные


novill   (2006-11-17 16:55:00) [10]

Хы, я даже не сразу заметил что это не дельфи...

где-то я читал про "дружественные классы и функции", вам туда.


DVM   (2006-11-17 16:50:00) [11]

А в военное время может меняться до C#


Array   (2006-11-17 16:49:00) [12]


> Эт чё, у делфи синтаксис сменился?


а как же по пятницам, вечером, он иногда меняеться в сторону ссссс... или ааассссммммаааа....

иногда даже становиться похож на java


DVM   (2006-11-17 16:39:00) [13]


> но с private полями как быть?

Если их в один модуль поместить, то будут видны. Но только нехорошо это. Неправильно спланировано, раз такие обращения возможны. Если поле в private, и оно кому-то нужно, значит оно не private по идее.


Плохиш   (2006-11-17 16:33:00) [14]

Эт чё, у делфи синтаксис сменился?


Наверх

Титульная страница Поиск, карта сайта Написать письмо