Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
Всем привет! У меня есть два класса сPoint и cRectangular: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Внутри cRectangular реализован метод isInside: Код: plaintext 1. 2. 3. 4. Вопрос в том, почему поля x и y класса сPoint не доступны в методе isInside класса cRectangular? Они ведь объявлены как protected в родительском классе сPoint, а значит должны быть доступны в классе наследнике cRectangular. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 12:21 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
попробуйте для теста написать this->x и this->y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 12:24 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
Точный текст сообщения об ошибке можно? Лично меня здорово смущают x1 и y1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 12:48 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
MaximuS_Gпочему поля x и y класса сPoint не доступны в методе isInside класса cRectangular? Потому что они принадлежат другому экземпляру. Protected поля не видны "снаружи" никому, даже другим экземплярам того же класса. За исключением друзей, но это отдельная тема. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 13:02 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
MaximuS_G, не доступны поля экземпляра point, переданного входным параметром в функцию. ну и что тут удивительного? это внешний, по отношению к cRectangular объект, никак не связанный с ним. и тот факт, что cRectangular наследуется от cPoint никак на это не влияет. Тем более, что в классе cPoint есть геттеры для этих полей, и какая религия запрещает их вам использовать, общественности не понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 13:06 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovMaximuS_Gпочему поля x и y класса сPoint не доступны в методе isInside класса cRectangular? Потому что они принадлежат другому экземпляру. Protected поля не видны "снаружи" никому, даже другим экземплярам того же класса. За исключением друзей, но это отдельная тема. Того же класса - видны. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Странное ограничение, кстати. Реально, как можно видеть, ни от чего не защищает, а проблемы создаёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 13:24 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
авторDimitry SibiryakovMaximuS_Gпочему поля x и y класса сPoint не доступны в методе isInside класса cRectangular? Потому что они принадлежат другому экземпляру. Protected поля не видны "снаружи" никому, даже другим экземплярам того же класса. За исключением друзей, но это отдельная тема. Это не так в С++. Это так только в smalltalk. Тут члены должны быть доступны, автор просто что-то попутал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 15:27 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто не так в С++. Это так только в smalltalk. Тут члены должны быть доступны, автор просто что-то попутал.Вот мне тоже казалось, что должны. Но студия 2010 в примере выше со мной не согласилась, причём именно с формулировкой "error C2248: 'Base::m_data' : cannot access protected member declared in class 'Base' ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 15:53 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
AbstractionВот мне тоже казалось, что должны. Но студия 2010 в примере выше со мной не согласилась И что неприятно - BCC с ней солидарен. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 16:16 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAbstractionВот мне тоже казалось, что должны. Но студия 2010 в примере выше со мной не согласилась И что неприятно - BCC с ней солидарен. Да как бы стандарт (2003, по крайней мере) с ней солидарен. Есть там такое мерзкое ограничение на доступ к protected-членам, логику которого я не вполне понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 16:19 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
Что-то не то. Без доступа к защищенным членам других экземпляров нельзя реализовать конструктор копирования и присвоение. Можно цитату из стандарта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 17:38 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
А, все правильно. Разрешен доступ к защищенным членам того же самого класса, но не к предку, даже если это предок из которого унаследованы эти члены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 17:43 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
А если конкретно по данному коду, то вот это нонсенс: Код: plaintext 1. Наследование это отношение "является". А прямоугольник никак не является точкой. Исправьте это и сразу отпадет необходимость лезть во внутренности точки из кода прямоугольника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 17:57 |
|
||
|
protected переменная не доступна из класса наследника
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо, теперь все понятно! Anatoly Moskovsky Наследование это отношение "является". А прямоугольник никак не является точкой. Исправьте это и сразу отпадет необходимость лезть во внутренности точки из кода прямоугольника. Такое домашнее задание задают :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 23:18 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38149264&tid=2020451]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 279ms |

| 0 / 0 |
