Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Преобразование типов |
Автор: itan 18.12.2007, 14:00 | ||
Предположим у меня есть функция, которая может возвращать указатели разных типов, приведенные к int:
Какой cast надо использовать, чтобы узнать какой имеено тип указателя вернулся? |
Автор: Sartorius 18.12.2007, 14:26 | ||
Эта информация в стеке не сохраняется. или возвращай структуру, содержащую тип указателя, либо запоминай, что передал в точке вызова. ЗЫ Возвращай хотя бы void*. А то Int как то странно выглядит в этой роли ЗЗЫ если включен RTTI - dynamic_cast может помочь |
Автор: archimed7592 18.12.2007, 15:51 | ||
Ну, а если типы не имеют общего полиморфного базового типа, то можно воспользоваться механизмом исключений:
Здесь, правда, кроются другие грабли - во-первых, т.к. механизм исключений используется не по назначению, то может появится нехилый оверхэд, во-вторых, если типы всё же имеют общий базовый, то расставив catch в неправильном порядке, можно получить не совсем то поведение, на которое расчитывалось ![]() Добавлено через 58 секунд Что-то я туплю - тут же boost::any - то что доктор прописал ![]() |
Автор: Alek86 18.12.2007, 15:56 |
archimed7592, ты зачем человека пугаешь? ![]() спрашивали ж, какой каст... |
Автор: archimed7592 18.12.2007, 16:00 |
В общем случае такого каста нет, как и было сказано выше ![]() |
Автор: Alek86 18.12.2007, 16:32 |
нда, не вчитался в вопрос... itan, если уж извращаешься, то ты ведь САМ задаешь, какой указатель вернется, зачем его тебе определять? кстати, 200% ты чего-то неправильно представляешь и твоя задача решается намного проще |
Автор: zkv 18.12.2007, 16:38 | ||
столь категоричным нельзя быть. Иногда приходится и с чужими велосипедами разбираться. |