Неоднозначность shared_from_this
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.146] |
|
|
| Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Неоднозначность shared_from_this
|
Сообщ.
#16
,
|
|
|
|
Тебе нужно видеть из h-файла все приватные мемберы, чтобы сказать о размере. Ты хочешь двух правил для мемберов-полей и мемберов-функций? Добавлено Иными словами наследники и клиенты класса и так не защищены от изменения приватной части. Так чего ты ещё хочешь? |
|
Сообщ.
#17
,
|
|
|
|
Цитата MyNameIsIgor @ Тебе нужно видеть из h-файла все приватные мемберы, чтобы сказать о размере. Ты хочешь двух правил для мемберов-полей и мемберов-функций? Так "видь" размер. Какое это отношение имеет к доступности имен? |
|
Сообщ.
#18
,
|
|
|
|
В том то и дело, что знает. И в этом отличительная черта объектой модели Плюсов. Ты можешь обойти инкапсуляцию, если очень надо, и иначе никак. Это будет говнокод, но не всё говнокод, что так выглядит, иногда говнокодом является не он сам, а его основополагающая база, и написанный тобой говнокод - это едиственный способ решить проблему. В случее PImpl такого в принципе невозможно будет сделать. Выбор как всегда на нами, а не языком.
|
|
Сообщ.
#19
,
|
|
|
|
Цитата D_KEY @ Так "видь" размер. Какое это отношение имеет к доступности имен? Так они не доступны Ты не можешь их вызвать и обратиться к ним. |
|
Сообщ.
#20
,
|
|
|
|
Я не говорю о Pimpl. Речь о том, что спецификаторы доступа должны влиять на поиск имен. Клиенту должны быть недоступны имена из закрытой части.
|
|
Сообщ.
#21
,
|
|
|
|
Цитата D_KEY @ Клиенту должны быть недоступны имена из закрытой части. Они и так недоступны! Ты же хочешь, чтобы они были невидимы. Т.е. превратить спецификаторы доступа в спецификаторы видимости. |
|
Сообщ.
#22
,
|
|
|
|
Цитата MyNameIsIgor @ Цитата D_KEY @ Так "видь" размер. Какое это отношение имеет к доступности имен? Так они не доступны Ты не можешь их вызвать и обратиться к ним.Недоступны мемберы. А имена - доступны. См. мой пример с неоднозначностью из-за добавления закрытого метода в базовый класс. Представь себе SFINAE с выбором специализации, допустим, по наличию внутреннего типа. Если у тебя будет соответствующий private-тип то SFINAE просто не сработает, а код не скомпилируется... Хотя надо попробовать |
|
Сообщ.
#23
,
|
|
|
|
Цитата D_KEY @ Недоступны мемберы. А имена - доступны. Так вот и давай говорить о доступности и о видимости, ok? Цитата D_KEY @ Представь себе SFINAE с выбором специализации, допустим, по наличию внутреннего типа. Если у тебя будет соответствующий private-тип то SFINAE просто не сработает, а код не скомпилируется... Да, я в курсе. И? |
|
Сообщ.
#24
,
|
|
|
|
Цитата MyNameIsIgor @ Цитата D_KEY @ Недоступны мемберы. А имена - доступны. Так вот и давай говорить о доступности и о видимости, ok? Имена-то доступны Ладно, ок, давно плюсовую литературу не читал Цитата Да, я в курсе. И? Почему это правильно(если в интерфейсе класса этого самого внутреннего типа нет) и ради чего, собственно? |
|
Сообщ.
#25
,
|
|
|
|
Цитата D_KEY @ Почему это правильно(если в интерфейсе класса этого самого внутреннего типа нет) и ради чего, собственно? Нужно освежить по D&E, там этому не мало посвящено. Просто мне кажется это логичным при механизме текстовых include'ов - мы и так всё видим, зачем делать вид, что нет? |
|
Сообщ.
#26
,
|
|
|
|
Цитата MyNameIsIgor @ Нужно освежить по D&E, там этому не мало посвящено. Да, я вот тоже вспомнить не могу... Сегодня посмотрю Цитата Просто мне кажется это логичным при механизме текстовых include'ов - мы и так всё видим, зачем делать вид, что нет? Потому, что это делает менее логичным поиск имен. |
|
Сообщ.
#27
,
|
|
|
|
Цитата D_KEY @ Потому, что это делает менее логичным поиск имен. Вот у тебя возникали серьёзные проблемы или ты только сейчас так разошёлся? |
|
Сообщ.
#28
,
|
|
|
|
Цитата MyNameIsIgor @ Вот у тебя возникали серьёзные проблемы Неа. Но я вообще не помню, чтобы мне как-то помогали private/protected/public. Это же не повод... |