![]() |
|
![]() ![]() ![]() |
|
maq |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
У меня такая проблема:
Нужно создать функцию, которая в зависимости от обработки (в теле самой функции), будет возвращать различные типы данных, например:
Кто-нибудь может помочь? |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Хмм. При сильном желании HBITMAP и HICON можно откастить в HANDLE.
Только надо ли оно? Ну еще можно использовать union'ы, или модный ныне boost::any ps. не стоит писать break после return'а. такой break никогда ничего не прервёт. Это сообщение отредактировал(а) Mayk - 19.2.2006, 19:22 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
kanSC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 6.7.2005 Репутация: нет Всего: нет |
Пусть функция возвращает void*. А после вызова приводи возвращаемое значение к нужному тебе типу.
|
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Оторвать руки за такие советы. А как определить к какому типу приводить? Можно использовать: 1. variant 2. boost::variant(с первым пунктом имеет мало общего) А в принципе тут скорее всего ошибка проектирования. Исходную задачу обнародуй -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 1 Всего: 165 |
Отставить отрывание рук
![]() Не нужно большого желания. HBITMAP и HICON это typedef'ы HANDLE. Добавлено @ 01:40 Если-же нужна реализация фабрики обьектов для других типов то: 1. Создаем базовой обьект с виртуальной функцией. 2. В switch'e наполняем вирт. функцию содержимым. 3. Возвращаем полиформно измененный обьект. --------------------
|
|||
|
||||
maq |
|
||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
DeadSoul, chipset, а если по-подробнее, пожалуйста.
И если можно с примером... Пробовал с VARIANT:
ошибка: Error 1 error C2664: 'tagVARIANT::tagVARIANT(const tagVARIANT &)' : cannot convert parameter 1 from 'HBITMAP' to 'const tagVARIANT &' c:\.....\rsplash.cpp 251
теперь уже уйма ошибок! (кажется ошибка синтаксиса) |
||||||||
|
|||||||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Фигню сморозил. Как-то забыл о том, что это все typedef-ы для void* maq, я бы подумал над разнесением этой функции на несколько -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 1 Всего: 165 |
Зачем? --------------------
|
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
chipset, а как с ней извне работать? Ты не знаешь, что там HICON,HBITMAP(а Api разные)
А внутри функции все равно switch\что-то shitch-е подобное -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
Ну вот, такое извращение:
|
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
bel_nikita, RETVALUE -> std::pair<...>
![]() -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
maq |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Задача такая вот:
Error 1 error C2664: 'CStatic::SetBitmap' : cannot convert parameter 1 from 'HANDLE' to 'HBITMAP' |
||||||
|
|||||||
Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Можно применить насилие (HBITMAP)LoadFromRes(...)
Однако с точки зрения объектного программирования, это не очень хорошо, лучше бы как-то так:
Использование:
Т.е. вместо одной утилитной функции используем один утилитный класс. Добавлено @ 20:08 Да, забыла, в деструкторе библиотеку нужно выгрузить. -------------------- ... |
||||
|
|||||
maq |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Earnest, мне нужна именно функция
которая в зависимости от задаваемого параметра intResType (DST_BITMAP или напр. DST_ICON и т.д) возвращала бы HBITMAP или HICON. Вместо твоего варианта я бы лучше разделил функцию LoadFromExtRes на LoadBitmapFromExtRes и LoadIconFromExtRes, которые возвращали бы HBITMAP и HICON. Мне нужно просто объединить эти функции. Но вот как? |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |