![]() |
|
Модераторы: bsa |
![]()
|
|
| LeonidPr |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
По мере появления свободного времени постепенно осваиваю Qt. Недавно, разбираясь с одним из примеров, наткнулся на использование qgraphicsitem_cast. Решил залезть во внутрь и посмотреть, как эта шаблонная функция устроена и был несколько удивлен увиденным.
Заинтересовал меня вот какой момент:
Здесь T насколько я понимаю - указатель. В результате работы static_cast получаем нулевой указатель типа T. А вот дальше что? Мы разыменовываем этот указатель и обращаемся к полю Type. Но указатель-то нулевой, как его можно разыменовывать? Что я упустил, в чем секрет? Нашел статью на Хабре, там описывается устройство qobject_cast, где встречается такое:
Причем ни у кого не возникает никаких вопросов по этому поводу, отсюда вывод, что всем все понятно. А я вот что-то не могу въехать. --------------------
pkunzip.zip |
||||||
|
|||||||
| leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
а может Type - static ? Для получения статика инстанс объекта не нужен, поэтому 0.
"T", естественно, только указатель. Это сообщение отредактировал(а) leniviy - 19.5.2012, 19:46 |
|||
|
||||
| LeonidPr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Полез дальше, Type - элемент неименованного перечисление внутри QGraphicsItem
То, что для обращения к статическим членам не нужен экземпляр это понятно, но вот то, что к ним можно обращаться через нулевой указатель на объект, это для меня новость. Пойду ставить эксперимент. Добавлено через 6 минут и 56 секунд И правда работает. Вот ссылочка, если кого заинтересует:пример. Спасибо, буду знать. Добавлено через 9 минут и 52 секунды Мысля пошла дальше. А ведь указатель-то и не разыменовывается. Вот, поэтому все и работает. Вот, теперь окончательно дошло. --------------------
pkunzip.zip |
|||
|
||||
![]()
|
| Правила форума "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. |