Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/64: Рейтинг темы: голосов - 64, средняя оценка - 4.59
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712

Создание класса в другом классе

27.10.2016, 16:40. Показов 12499. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех. Уважаемые гуру, скажите можно ли создавать класс в теле друго класса? Причем создание "внутреннего" класса идет на основании класса родителя. Код примерно такой:
C++
1
2
3
4
5
6
7
8
9
10
11
class TMajor
{
 private:
 class THeir : public TParent
  {
   private:
   ...
  } *Heir;
 
 public:
};
Компиляция кода по такому шаблону не вызывает ошибок, но у меня почему-то сомнения (может просто от того, что никогда не встречал таких конструкций). Развейте их пожалуйста. Или может так лучше не делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2016, 16:40
Ответы с готовыми решениями:

Создание объекта в другом классе с последующем использованием в методах другого класса
Здравствуйте! Заранее спасибо! Помогите пожалуйста разобраться в следующей ситуации. Имеется у меня плата Orange Pi One Plus, взял по...

Объект класса в другом классе
Здравствуйте! Недавно начал учить классы, прошу помогите мне. Мой написанный код не работает. Можете сказать, что с ним не так? ...

Вызвать метод класса в другом классе
Подскажите как мне вызвать метод класса в другом классе ?

23
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
12.07.2017, 21:09  [ТС]
Студворк — интернет-сервис помощи студентам
TheCalligrapher, ранее DrOffset показал как можно осуществить доступ к переменной одного класса через ссылку на объект этого класса. То, что внутренний класс имеет доступ к переменным внешнего класса там наглядно видно, ведь внутренний класс получает доступ к переменной в закрытой секции. Но остается вопрос о "дружественном доступе". Что это такое?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,416
12.07.2017, 21:10
Цитата Сообщение от d7d1cd Посмотреть сообщение
ведь внутренний класс получает доступ к переменной в закрытой секции. Но остается вопрос о "дружественном доступе". Что это такое?
Вот это и есть "дружественный доступ": когда кто-то получает доступ к переменной в закрытой секции. Закрытая секция потому и называется закрытой, что туда кого попало не пускают.
1
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
12.07.2017, 22:03  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вот это и есть "дружественный доступ": когда кто-то получает доступ к переменной в закрытой секции.
Но ведь перед функцией HeirFoo нет ключевого слова friend. Почему тогда она "друг" и имеет доступ к закрытой секции?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,416
12.07.2017, 23:15
Цитата Сообщение от d7d1cd Посмотреть сообщение
Но ведь перед функцией HeirFoo нет ключевого слова friend. Почему тогда она "друг" и имеет доступ к закрытой секции?
Ну, с формальной-педантичной точки зрения "дружественный доступ" тут, конечно, совершенно ни при чем.

Просто до С++03 вложенный класс не имел никаких особых прав доступа к членам внешнего класса. Чтобы дать ему такой доступ его надо было явно объявлять как friend. А в С++03 это было изменено: вложенный класс и так получил неограниченный доступ ко всем членам внешнего класса. Вложенный класс теперь считается членом внешнего класса, и как и всякий член, имеет доступ ко всему.

Неформально такой неограниченный доступ иногда называют "дружественным" (ибо он ничем не отличается от "дружественного"). В смысле: раз может лезть в закрытую секцию, значит "друг".
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2017, 23:15

Массив элементов класса в другом классе
Есть класс "студент" и "группа". В группе есть массив студентов. Как из main использовать методы класса студент, через класс группа?...

Использование объектов класса в другом классе
Пусть имеются 2 класса Snake и Food, а также 2 их объекта snake и food соответственно. food должен в одном из его методов работать со...

Вызов динамического аргумента класса в другом классе
Здравствуйте! Появилась проблема, в ходе решения задания, есть переменная scolarship, которая в ходе выполнения работы программы принимает...

Классы: определение идентификатора класса, в другом классе
Доброго времени суток:) Проблема в не знании, как идентифицировать переменную, использовавшаяся в другом классе. // 1 IntelliSense:...

Использование данных одного класса в другом классе
Подскажите как сделать так что бы значения d1,d2 из первого класса можно было использовать во втором классе? #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru