|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
||||||
Создание класса в другом классе27.10.2016, 16:40. Показов 11988. Ответов 23
Метки нет (Все метки)
Приветствую всех. Уважаемые гуру, скажите можно ли создавать класс в теле друго класса? Причем создание "внутреннего" класса идет на основании класса родителя. Код примерно такой:
0
|
||||||
| 27.10.2016, 16:40 | |
|
Ответы с готовыми решениями:
23
Объект класса в другом классе Вызвать метод класса в другом классе |
|
Вездепух
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,197
|
|
| 27.10.2016, 17:21 | |
|
1
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 27.10.2016, 17:23 | |
|
d7d1cd, название у данного подхода -
Nested class c++
1
|
|
|
Комп_Оратор)
|
||||||||
| 27.10.2016, 23:53 | ||||||||
|
Я жуть как удивился. Ведь наследник ЭТО родитель ( IS ). То есть, следуя общему правилу, невозможности рекурсивных определений для типов (можно указатель лишь на себя определить) не должно скомпилироваться. Попробовал и точно:
![]() Пробовал гуглить сначала, но только в в Wiki нашёл в начледовании для шарпа. Там разрешено включать класс наследник. Но это не C++. ![]() https://ru.wikipedia.org/wiki/... 0%B8%D0%B5)
0
|
||||||||
|
82 / 82 / 44
Регистрация: 14.07.2013
Сообщений: 410
|
|
| 27.10.2016, 23:55 | |
|
IGPIGP, там другой класс в качестве базового
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||
| 28.10.2016, 02:35 | |||||||
4
|
|||||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
||||||
| 28.10.2016, 08:11 [ТС] | ||||||
|
Еще вопрос. Чтобы написать реализацию функции внутреннего класса надо указать сначала внешний класс, потом внутренний, потом саму функцию?
0
|
||||||
|
Комп_Оратор)
|
||||||
| 28.10.2016, 10:24 | ||||||
|
Renji, я понимаю, что вопрос чисто теоретический, так как наследование обычно сильно именно публичным наследование с виртуальным полиморфизмом, а вложенность отражает намерение скрыть тип. И такое противоречие не может не порождать проблем. Или я опять не знаю как выйти из ситуации или наследование во вложенном классе от внешнего класса проблематично в части использования наследника в себе же. Поскольку тема не совсем соответствует старту, - под спойлер:
Кликните здесь для просмотра всего текста
d7d1cd, тут немножко есть про обращение к методам вложенного класса. Совет: создайте сначала объект вложенного класса для обращения к его нестатическим методам. Для обращения к статическим - через полную квалификацию имён от внешнего класса. И да, всё должно быть public.
0
|
||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 28.10.2016, 10:44 | ||
|
0
|
||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
||
| 28.10.2016, 10:51 [ТС] | ||
|
0
|
||
|
Комп_Оратор)
|
|||
| 28.10.2016, 11:04 | |||
0
|
|||
|
|
|||||||
| 28.10.2016, 12:35 | |||||||
|
Хотя подобным образом удобно использовать структуры вложенные в класс для группировки членов класса.
0
|
|||||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 12.07.2017, 14:21 [ТС] | |
|
Возник вопрос по текущей теме вложенных классов, а проверить не могу - компилятора нет под рукой. Подскажите, доступны ли переменные внешнего класса из функций его вложенного класса?
0
|
|
|
Комп_Оратор)
|
||
| 12.07.2017, 16:34 | ||
![]() К переменным в смысле - объектам и сам класс не может (своими статическими методами). Их надо передавать (объекты).
0
|
||
|
Вездепух
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,197
|
||
| 12.07.2017, 18:52 | ||
|
Права доступа к полям внешнего класса у вложенного класса есть.
0
|
||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
||||||||
| 12.07.2017, 19:46 [ТС] | ||||||||
HeirFoo к переменной MajorData?
0
|
||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||
| 12.07.2017, 20:09 | |||||||
2
|
|||||||
|
Комп_Оратор)
|
|||
| 12.07.2017, 20:28 | |||
|
1
|
|||
|
Вездепух
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,197
|
|||
| 12.07.2017, 20:57 | |||
|
Из того, что у вас есть права на вождение автомобиля, совсем не следует, что у вас уже есть автомобиль. Автомобиль вам все таки придется добывать самому, отдельно. У вас может быть целый ящик разных прав на вождение автомобиля, но если у вас нет самого автомобиля, то водить вам будет нечего. У вложенного класса есть права на доступ к полям внешнего класса. Но сначала вложенному классу надо получить объект этого внешнего класса, к полям которого он будет доступаться. У вас в коде никакого объекта внешнего класса нет вообще. Поэтому и доступаться вам не к чему. Об этом вам и говорит компилятор. MajorData существуют только внутри объектов типа TMajor. Где ваш объект типа TMajor, к полю MajorData которого вы хотите доступиться из HeirFoo()? Если нет объекта, то и доступаться не к чему.
1
|
|||
| 12.07.2017, 20:57 | |
|
Помогаю со студенческими работами здесь
20
Массив элементов класса в другом классе Использование объектов класса в другом классе Вызов динамического аргумента класса в другом классе
Использование данных одного класса в другом классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|