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

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

27.10.2016, 16:40. Показов 12343. Ответов 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
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,320
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
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,320
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
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru