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

Изменение уровня доступа при наследовании - C++

Восстановить пароль Регистрация
 
zzz_
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
02.05.2012, 19:48     Изменение уровня доступа при наследовании #1
Ситуация такая
C++
1
2
3
4
5
6
7
class A
{protected: int c;
};
class B:public A
{public:
A::c;
}
Ругается - пишет что мол попытка изменения доступа A::c. Почему вроде читал, что должно работать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JokerNN
132 / 128 / 36
Регистрация: 29.12.2011
Сообщений: 359
02.05.2012, 20:01     Изменение уровня доступа при наследовании #2
Не должно, протектед члены доступны только членам иерархии, а у вас получается, что через класс B переменную c может поменять кто угодно, заверните доступ к с через паблик методы класса В. Тогда всё будет работать
AAA-
13 / 13 / 1
Регистрация: 14.02.2012
Сообщений: 46
02.05.2012, 20:03     Изменение уровня доступа при наследовании #3
протектед в классе B должно быть
zzz_
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
02.05.2012, 20:09  [ТС]     Изменение уровня доступа при наследовании #4
AAA-, Дак и так он наследуется протектед, я переопределить хчу

Добавлено через 33 секунды
Цитата Сообщение от JokerNN Посмотреть сообщение
Не должно, протектед члены доступны только членам иерархии, а у вас получается, что через класс B переменную c может поменять кто угодно, заверните доступ к с через паблик методы класса В. Тогда всё будет работать
Просто говорят, что можно изменить уровень доступа
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
02.05.2012, 20:11     Изменение уровня доступа при наследовании #5
Смысл вообще тогда в уровне доступа, если его может изменить любой наследник?
zzz_
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
02.05.2012, 20:23  [ТС]     Изменение уровня доступа при наследовании #6
Цитата Сообщение от Toshkarik Посмотреть сообщение
Смысл вообще тогда в уровне доступа, если его может изменить любой наследник?
Ну а friend, он же тоже для этого

Добавлено через 11 минут

Не по теме:

А что представляется тут под наследованием. То что создаются якобы два объекта - базовый и производный?


Не по теме:

То есть объекты базовых классов включаются в объекты производных?

Bers
Заблокирован
02.05.2012, 20:24     Изменение уровня доступа при наследовании #7
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class CTest
{
protected:
    void Test() { std::cout<< "test passed\n";}
};
 
class CDerrive: public CTest
{
public:
    using CTest::Test;
};
 
int main()
{
    CDerrive test;
    test.Test();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2012, 20:25     Изменение уровня доступа при наследовании
Еще ссылки по теме:

Конструкторы при наследовании C++
Спецификаторы доступа при наследовании C++
C++ Присвоение при наследовании

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

Или воспользуйтесь поиском по форуму:
zzz_
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
02.05.2012, 20:25  [ТС]     Изменение уровня доступа при наследовании #8
Цитата Сообщение от Bers Посмотреть сообщение
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class CTest
{
protected:
    void Test() { std::cout<< "test passed\n";}
};
 
class CDerrive: public CTest
{
public:
    using CTest::Test;
};
 
int main()
{
    CDerrive test;
    test.Test();
}
Спасибо, но компилятор Borland C++ 3.1
Yandex
Объявления
02.05.2012, 20:25     Изменение уровня доступа при наследовании
Ответ Создать тему
Опции темы

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