Форум программистов, компьютерный форум CyberForum.ru

Доступ к private переменной класса из его потомка - C++

Восстановить пароль Регистрация
 
ivanbelousov
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 32
06.10.2015, 13:11     Доступ к private переменной класса из его потомка #1
Здравствуйте! Как получить доступ к закрытой переменной родительского класса в методе наследника?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
class Fowler 
{
private: 
    int c;
};
 
class BFowler : private Fowler
{
    void func(){ Fowler::c; }
};
 
int main( int argc, char * argv[])
{
    BFowler a;
 
    return EXIT_SUCCESS;
}
Выдает ошибку:
error: 'c' is a private member of 'Fowler'
void func(){ Fowler::c; }
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
06.10.2015, 13:23     Доступ к private переменной класса из его потомка #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
class Fowler 
{
protected: 
    int c;
};
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
06.10.2015, 13:57     Доступ к private переменной класса из его потомка #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class BFowler;
 
class Fowler
{
   friend class BFowler;
private:
   int c;
};
 
class BFowler : private Fowler
{
   void func() { Fowler::c; }
};
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.10.2015, 14:16     Доступ к private переменной класса из его потомка #4
Цитата Сообщение от ivanbelousov Посмотреть сообщение
Как получить доступ к закрытой переменной родительского класса в методе наследника?
Если такая необходимость возникла - значит надо переорганизовать архитектуру.
Допускать protected неконстантные данные - зло.
Хочешь получать доступ к private полю базового класса из производного - сделай в базовом методы доступа и размести их в protected секции:
C++
1
2
3
4
5
6
7
class B {
private:
  int c;
protected:
  int getC() const { return c; }
  void setC(int c) { this->c = c; }
};
Yandex
Объявления
06.10.2015, 14:16     Доступ к private переменной класса из его потомка
Ответ Создать тему
Опции темы

Текущее время: 07:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru