134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
|
||||||
1 | ||||||
Невозможно обратиться к protected член, объявленному в классе "Counter"23.07.2014, 16:07. Показов 8798. Ответов 31
Метки нет (Все метки)
0
|
23.07.2014, 16:07 | |
Ответы с готовыми решениями:
31
Невозможно обратиться к private член, объявленному в классе Невозможно обратиться к private член, объявленному в классе "Complex" QWidget::operator =: невозможно обратиться к private член Обратиться к форме из наследника, объявив ui protected О недоступности protected членов в производном классе |
23.07.2014, 16:20 | 2 | |||||
У вас конструктор закрытый и поэтому не возможно создать объект.
Перепишите класс следующим образом:
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
23.07.2014, 16:26 | 3 | |||||
clang выдает такое пояснение:
ТС, вам это по сути не нужно. Можно сделать так:
Ilot, Чего это он закрытый? Он защищенный. И зовется из функции потомка.
1
|
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
|
|
23.07.2014, 16:26 | 4 |
stzer, скажи, а зачем ты используешь protected?
0
|
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
|
|
23.07.2014, 16:33 [ТС] | 5 |
frostyfull, для изучения тонкостей языка.
Добавлено через 1 минуту ForEveR, просто непонятно, почему потомок не видит конструктора базового класса.
0
|
23.07.2014, 16:39 | 6 | |||||
Ну это и имелось ввиду.
Он его видит однако для того что бы создать объект его конструктор должен быть открытым. В противном случае конструирование возможно только посредством статической функции, как, например, это применяется в паттерне синглон. А вот вам и пример:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 16:42 | 7 |
Я мб спрошу какую-то глупую вещь, но можно выдержку из стандарта по этому поводу? Ссылка на stackoverflow или еще куда тоже сойдет.
0
|
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
|
|
23.07.2014, 16:47 [ТС] | 8 |
Ilot, а вроде статическая функция работает только с статическими элементами? Нет?
0
|
23.07.2014, 16:52 | 9 |
ForEveR, 11.4 Protected member access оно?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 17:00 | 10 |
HighPredator, Я не вижу там ровным счетом ничего про данный случай, почему это я не могу создать объект базового класса просто так, а не как часть данного (в конструкторе)?
0
|
23.07.2014, 17:01 | 11 | |||||
Я скорее всего совру, но как я понимаю конструктор это особливая функция которая вызывается компилятором(?) и она поэтому обязана быть открытой. К примеру есть попытаться проделать похожий фокус с protected функцией не конструктором то все будет ок:
Кликните здесь для просмотра всего текста
Хотя, если быть откровенным, я уже сам запутался
0
|
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
|
|
23.07.2014, 17:05 [ТС] | 12 |
Ilot, Почему там static? Он там не нужен.
И вообще я читал везде, что статический метод используется для обращения только к стат-ким полям класса.
0
|
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
|
|
23.07.2014, 17:13 | 14 |
Ilot, о я наконец допер что есть конструктор и что есть диструктор, именно в плане понимания
собственно и 5 лет не прошло с момента изучения классов
0
|
23.07.2014, 18:17 | 15 |
ForEveR, а, значит я не так понял что тебе нужно, сорри.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
23.07.2014, 18:38 | 16 | |||||
Он может обращаться к любым членам
просто в него не передается неявный параметр this, в отличии от нестатических методов следовательно его нужно явно передать например
1
|
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
|
|
23.07.2014, 19:00 [ТС] | 17 |
ValeryS, Спасибо, интересно
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
||||||
23.07.2014, 19:23 | 18 | |||||
Да можешь запросто, например из friend функции. Из нее можно и с private.
Добавлено через 7 минут
Полезно при проектировании фабричных классов. Создаваемые классы защищены от создания вне фабрики (protected конструктор), но в то же время их можно расширять путем наследования.
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
||||||
23.07.2014, 20:35 | 20 | |||||
Сообщение было отмечено Убежденный как решение
Решение
А вот в чем вопрос-то. Я сразу не понял
В общем, protected просто так работает. Он предоставляет доступ к "закрытым" полям базового класса только для объекта наследника. Вот небольшой пример:
Ссылку на стандарт попробую попозже найти. Добавлено через 9 минут Собственно вот (о чем я и говорил см. Clause 11): 12/4
5
|
23.07.2014, 20:35 | |
23.07.2014, 20:35 | |
Помогаю со студенческими работами здесь
20
Почему дружественная функция не может обратиться к protected полю класса? Не могу в дочернем классе вызвать protected метод Невозможно соединиться с сервером в Counter-Strike 1.6 ПО CORAL-ERM: COUNTER R5 либо конвертация COUNTER R5 в COUNTER R4 Не могу в методе дочернего класса обратиться к protected члену родительского класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |