![]() |
|
|
![]()
|
|
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Чтобы узнать о принадлежности некоторого объекта к какому-то классу на Delphi мы пишем так:
if (frm is TForm) then как то же самое реализовать в Bulider'е? -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| tzirechnoy |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Есть два варианта: для VCL (и вообще потомков TObject) сработает
, а стандартный для C++ вариант (но сработает только если в настройках компилятора не выключить что-то там про RTTI) --
(это при условии, что frm -- указатель на объект. Если ссылка, то первый вариант -- понятно, а второй -- или привести к указателю или ловить исключение std::bad_cast или как-то так) |
||||
|
|||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
tzirechnoy,
Знать бы что. А первый вариант вроде пашет. -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
И, если мне не изменяет память, dynamic_cast будет работать вне зависимости от RTTI. Настройка RTTI в Builder'е относится к exception'ам. Это сообщение отредактировал(а) borisbn - 5.8.2015, 11:43 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Изменяет память. dynamic_cast работает на RTTI. Но для его работы достаточно базового RTTI С++ . Расширенный паскалевский не нужен. __classid - это VCL вский расширенный RTTI. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
Ага. Проверил. Без RTTI не работает. Меня сбило то, что в Builder'е настройку RTTI засунули в раздел "Exception handling" -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
В некоторых реализациях они между собой связаны. Встречал уже такое. Кроме того dynamic_cast умеет бросать исключение std::bad_cast . Если отключить исключения, то непонятно как сработает этот механизм. Будет какой нить UB. Вероятно поэтому они отключают dynamic_cast при выключении исключений. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |