Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Вопрос по "вложенным" классам   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.055 c
2-1166671454
4ert
2006-12-21 06:24
2007.01.14
function connect...


15-1167065954
kkkklal
2006-12-25 19:59
2007.01.14
Opera жрет память.


2-1166901178
ezorcist
2006-12-23 22:12
2007.01.14
завершение консольног приложения


2-1166909334
школьник :-)
2006-12-24 00:28
2007.01.14
ADO и транзакции


15-1166631451
IMHO
2006-12-20 19:17
2007.01.14
"Война - войной, а обед - по расписанию"