|
Модераторы: Daevaorn |
|
Neitron |
|
|||
Опытный Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Подскажите, возможно ли приватный член класс, расприватить для одной единсвенной функции, не используя друзей и наследования?
-------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Нельзя. Причем наследование тебе "расприватить" не поможет. Вот "распротектить" - это запросто .
Кстати, раз возникла такая надобность, встает вопрос о дизайне: все ли там хорошо? Все же приватные члены - дело интимное. Или это не твой класс? Тогда расприватить тебе вообще ничто не поможет... -------------------- ... |
|||
|
||||
Neitron |
|
|||
Опытный Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Класс VCL эти.... засунули OnMouseMove в приват.
Расприватить то я могу в наглую.... но не хочется лесть в чужой код.... Ладно. всё. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
причем если наследование разрешено и конструктор не приватный -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
cozzzy |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 54 Регистрация: 29.4.2006 Где: Харьков Репутация: нет Всего: нет |
|
|||
|
||||
MAKCim |
|
||||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Есть у меня подозрение, что это было сделано специально (допустим, используется для внутренних целей). |
|||
|
||||
threef |
|
|||
Опытный Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
Перехвати мышА раньше обработчика класса
|
|||
|
||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ага, написать protected члены в классе, от которого запрещено наследоваться, это высший C++ пилотаж
Правильно, что не хочешь... библиотеки перекомпилировать придется... Я совсем не знаю VCL (когда-то видела, но забыла как страшный сон), но могу предполжить несколько вариантов: 1) если этот метод private - его можно переопределить, причем сделать хоть protected, хоть public, только вызвать базовый метод не удастся 2) если не private, должен быть какой-то способ подключать свои обработчики, т.е. опять таки, можно его подменить в производном классе... Это сообщение отредактировал(а) Earnest - 11.5.2006, 18:05 -------------------- ... |
|||
|
||||
Mayk |
|
|||
^аВаТаР^ сообщение>> Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
См. Саттера.
Да, если класс имеет шаблонные функции. Шаблонные ф-ции имеют полный доступ к private переменным класса.
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Точно Mayk, отличное решение! Только вот вряд ли там есть подходящие функции...
-------------------- ... |
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
если уж лезть в чужой код, то самое то, хоть остальная логика не нарушится -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Что не то.
Если это производный класс TControl, то там OnMouseMove - protected Ну даже, если в Вашем классе свойство private и этот класс все таки производный от TControl, то вскрыть его не представляет проблем.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |