Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1166554186
cando
2006-12-19 21:49
2007.01.14
пароли и имена подключений


15-1166515140
AGSmit
2006-12-19 10:59
2007.01.14
У монитора кинескоп плохо светит


15-1166600124
EkZot
2006-12-20 10:35
2007.01.14
Макросы в Excel


2-1166641119
Signate
2006-12-20 21:58
2007.01.14
Манипуляции с TSocket...


15-1167052355
Handle
2006-12-25 16:12
2007.01.14
Handle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский