Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 36
1

Базовые и порожденные классы

28.12.2013, 18:12. Показов 2193. Ответов 2
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста с вопросом:
Что должно быть предусмотрено в базовом классе, чтобы порожденный класс мог обращаться к закрытым полям базового класса?


если можно то с примером.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2013, 18:12
Ответы с готовыми решениями:

Наследование, базовые классы и производные классы
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из базового класса и...

Виртуальные базовые классы
Необходимо написать примеры с комментариями использования виртуальных базовых классов

Виртуальные базовые классы
Есть программа. Нужно сделать с ней виртуальный базовый класс и написать коментарии. #include...

Абстрактные базовые классы
Помогите решить пожалуйста!) Задание 1 . Создать базовый класс - фигура, и производные класс -...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
2
Форумчанин
Эксперт CЭксперт С++
8165 / 5013 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
28.12.2013, 18:22 2
Лучший ответ Сообщение было отмечено Ks1NoN как решение

Решение

Они (свойства и методы) должны иметь модификатор доступа public или protected.
Либо обращение должно идти через методы-интерфейс базового класса, который сами имеют модификатор доступа не private, а внутри работают с любыми членами (в т.ч. private).

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A
{
  public:
    int getY() const { return y; } // интерфейс для доступа к закрытому члену
  protected:
    int x;
  private:
    int y;
};
 
class B : public A
{
  public:
    void foo() const
    {
        std::cout << x;      // так сделать можно
        // std::cout << y; так сделать нельзя, модификатор доступа private
        std::cout << getY(); // так сделать можно
    }
};
1
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 36
28.12.2013, 18:31  [ТС] 3
Цитата Сообщение от MrGluck Посмотреть сообщение
Они (свойства и методы) должны иметь модификатор доступа public или protected.
Либо обращение должно идти через методы-интерфейс базового класса, который сами имеют модификатор доступа не private, а внутри работают с любыми членами (в т.ч. private).

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A
{
  public:
    int getY() const { return y; } // интерфейс для доступа к закрытому члену
  protected:
    int x;
  private:
    int y;
};
 
class B : public A
{
  public:
    void foo() const
    {
        std::cout << x;      // так сделать можно
        // std::cout << y; так сделать нельзя, модификатор доступа private
        std::cout << getY(); // так сделать можно
    }
};
Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2013, 18:31

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Абстрактные базовые классы
задача: Создать абстрактный базовый класс с виртуальной функцией – объем. Создать производные...

Абстрактные базовые классы
Не могу создать экземпляр производного от АБК класса: #pragma once class BaseEllips { private:...

Виртуальные базовые классы и деструкторы
Пожалуйста, помогите разобраться. Решаю задачу 6 глава 17 из Праты. Кратко: в определении...

Виртуальные абстрактные базовые классы
Привет всем!:-) Вчера столкнулся со следующей проблемой: компилятор ругается на чистый виртуальный...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.