Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2013, 19:39   #1
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
Лампочка Определение типа класса в процессе работы программы ?

На паскале писал так:

Код:
procedure TPaper.Process(var T : TSomething);
begin
  if T is TPaper then
    writeln ('Replay! No one win')
  else if T is TRock then
    writeln('TPaper wins TRock!')
  else
    writeln('TScissors wins TPaper!')

end;
А как в С++ динамически поинтересоваться является ли переменная определенным типом класса?
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 16.06.2013, 19:52   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

через typeid разве что, если чисто так.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.06.2013, 20:02   #3
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

ясно,спс.
я тут прочел http://ru.wikipedia.org/wiki/Динамич...ия_типа_данных
что там опцию нужно добавлять при компиляции, что это за опция такая?

Цитата:
В C++ для динамической идентификации типов[1] применяются операторы dynamic_cast и typeid (определён в файле typeinfo.h), для использования которых информацию о типах во время выполнения обычно необходимо добавить через опции компилятора при компиляции модуля.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 16.06.2013, 20:09   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Опция у разных компиляторов по разному называться будет. А так речь идет о RTTI - Run Time Type Information.

А зачем вообще это нужно в данном случае?
Разве нельзя сделать виртуальную функцию?
Или просто передавать константы?
waleri вне форума Ответить с цитированием
Старый 16.06.2013, 20:12   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну в Делфи RTTI более крепко вписано в язык, чем в С++.

а так dynamic_cast аналогичен as примерно.
а вот прямого аналога is, помоему нету.
потому получать тип через typeid, и там сравнивать имя класса.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.06.2013, 20:12   #6
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

Цитата:
А зачем вообще это нужно в данном случае?
мне просто интересно стало, я посмотрел на кусок кода на паскале и задался вопросом, а как же аналогичный кусок на си будет выглядеть ?
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11
Полное зависание Delphi в процессе работы artemavd Общие вопросы Delphi 10 05.12.2010 05:25
Как осуществить возможность выбора БД в процессе работы программы Cabyrc БД в Delphi 9 21.03.2009 08:30
Блокировка функции в процессе ее работы Andr180nag JavaScript, Ajax 2 11.08.2008 18:07