Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ivanbelousov
0 / 0 / 0
Регистрация: 20.11.2014
Сообщений: 34
#1

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

06.10.2015, 13:11. Просмотров 711. Ответов 3
Метки нет (Все метки)

Здравствуйте! Как получить доступ к закрытой переменной родительского класса в методе наследника?
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; }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2015, 13:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доступ к private переменной класса из его потомка (C++):

Доступ к private членам класса - C++
Почему при таком объявлении не работает оператор вывода, по идее он же объявлен как друг класса и должен иметь доступ к членам этого...

Доступ к private структуре класса - C++
class MyClass { private: struct TMass{ char str2; int x; TMass *next; } *begin; public: ...

Как получить доступ в private из дочернего класса? - C++
Привет :) Изучаю наследование. Столкнулся с такой проблемой. Написал класс &quot;Figure&quot; и создал его дочерний класс &quot;Square&quot;. ...

Вызов специфических для потомка функций, не зная класса потомка - C++
Доброго времени суток. Когда-то давно делал работу в C#, а сейчас захотел повторить то же в C++. Затык вот в чем. был у меня...

Получить доступ к переменной класса при наличии такого же имени переменной в функции - C++
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в конструкторе этого класса. И мне нужно...

Доступ к переменной родительского класса - C++
Добрый день, уважаемые форумчане, изучаю классы в с++, есть вопрос: можно ли вызвать public функцию или переменную родительского класса...

3
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
06.10.2015, 13:23 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
class Fowler 
{
protected: 
    int c;
};
1
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
06.10.2015, 13:57 #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; }
};
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.10.2015, 14:16 #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; }
};
1
06.10.2015, 14:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2015, 14:16
Привет! Вот еще темы с ответами:

Реализовать оператор= для присваивания объекта класса-потомка объекту базового класса - C++
Есть два класса A и B, причем класс B является потомком A. Как реализовать следующее: obj_A = obj_B и obj_B = obj_A? Добавлено через 9...

Почему есть доступ к закрытой переменной класса - C++
Привет. Я уже было находил ответ на свой вопрос, но забыл :( Вопрос такой: есть след. класс: class Test { public: void F(Test t) {...

Вызов метода базового класса из класса-потомка - C++
Нужно вызывать из метода, переопределенного в потомке, соответствующий метод базового класса. При этом они являются виртуальными. Вот...

Доступ к данным потомка - C++
Здравствуйте, коллеги! В теме почти что полный 0, потому прошу сделать скидку Есть базовый класс (CMyPoint), от него наследуют еще...


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

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

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