![]() |
|
Модераторы: bsa |
![]()
|
|
| CosmoMan |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 12.7.2005 Где: Харьков Репутация: нет Всего: 0 |
Столкнулся с интересной проблемой.
Есть такой код:
Указатель на этот класс передается как *void в функцию библиотеки некого компонента (wxWidgets). Затем при активации компонента я получаю указатель *void на мой класс.
Проблема: robj->m_type не равен RO_TYPE_NONE (0) и каждый раз равняется разному числу больше 10000000 Но robj->m_ID равно 123 и функция вызывается правильно. Почему enum не работает через *void ? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
такое ощущение, что Вы убрали часть важного .. хотя оставили кучу ненужного..
где показано как сохраняете в void*? какой именно класс сохраняете в воид* ? он имеет множественное наследование? определены m_id и m_type действительно ли в одном классе ? Это сообщение отредактировал(а) mes - 7.11.2010, 20:26 |
|||
|
||||
| CosmoMan |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 12.7.2005 Где: Харьков Репутация: нет Всего: 0 |
Да, прошу прощение. От этого класса наследуется потомок, который затем передается как *void.
Передача по void*
wxTreeItemData* - это потомок класса wxClientData, возвращаемого функцией event.GetClientObject(). Класс wxClientData играет роль указателя на void. Это сообщение отредактировал(а) CosmoMan - 7.11.2010, 20:37 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
class IRedactorObject не имеет базы ? на каком основании тогда делаете каст к wxTreeItemData* ?
они у Вас бинарно совместимы ? Добавлено @ 21:21 почему не static_cast ? а лучше dynamic_cast.. но только после устранения несовместимости типов.. Это сообщение отредактировал(а) mes - 7.11.2010, 21:23 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
хак:
Это сообщение отредактировал(а) mes - 7.11.2010, 21:55 |
|||
|
||||
| CosmoMan |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 12.7.2005 Где: Харьков Репутация: нет Всего: 0 |
Честно, не знаю. Класс wxClientData не имеет полей вообще, только конструктор и виртуальный деструктор. Если от него наследовать IRedactorObject, то это ничего не дает. Я бы рад заюзать что то другое, но это пока единственный способ для меня без лишних телодвижений узнать, какой элемент дерева активировал пользователь.
Если юзать статик или дунамик, вообще возвращает NULL((
О_о, фигассе, работает!! Как будто там указатель смещенный был. ? Спасибо огромное! Это сообщение отредактировал(а) CosmoMan - 8.11.2010, 01:38 |
||||||||
|
|||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
a wxTreeItemData имеет.. нет, это wxTreeCtrl затирает ваш енум, работая с Вашим классом как с wxTreeItemData.. на этом месте (где был енум) хранится wxTreeItemId.. Добавлено через 8 минут и 6 секунд т.е. после привода к одной базе.. а именно после наследования от TreeItemData.. Это сообщение отредактировал(а) mes - 8.11.2010, 09:42 |
|||
|
||||
| CosmoMan |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 12.7.2005 Где: Харьков Репутация: нет Всего: 0 |
Все, разобрался. Я не от того класса наследовал. Если наследовать от TreeItemData, то все ок.
Спасибо за помощь. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |