C++: как выбрать тип переменной во время выполнения? |
Здравствуйте, гость ( Вход | Регистрация )
C++: как выбрать тип переменной во время выполнения? |
mezmay |
21.7.2009, 9:28
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
Проблема такая: хочу создать класс для обработки массивов чисел. Элементами могут быть вещественный или комплексный short, int, float, double. Программа должна работать примерно так: открываю файл, выбираю тип данных (например, комплексный float) и делаю необходимые преобразования массивов. Вопрос: как хранить прочитанный массив в классе? если например создать поле void *data и после открытия делать myObject.data = new scplx[n]; - то как передавать тип в методы? можно конечно создать enum types{ INT, FLOAT, ...} и в каждом методе делать switch (TYPE){ case INT: ..... case FLOAT: ...} но так слишком много case'ов придется везде вставлять. Есть ли какое-то нормальное решение этой проблемы?
вроде бы для подобных целей существуют шаблоны, но опять же - как задать шаблону тип во время выполения? |
|
|
Tonal |
28.7.2009, 10:43
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
2 AD Всё бы тебе на лисапедах ездить.
Boost.Any Boost.Variant Локи - прикольная библиотечка для учёбы, но для промышленного использования лучше таки Boost. |
|
|
AD |
28.7.2009, 10:49
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
2 AD Всё бы тебе на лисапедах ездить. Boost.Any Boost.Variant Локи - прикольная библиотечка для учёбы, но для промышленного использования лучше таки Boost. Ну впринципе я и учусь. Но все-равно спасибо! Посмотрю! P.S. Почитал про указанные конструкции. Непонятно, как их применить к указанному коду? Сообщение отредактировал AD - 28.7.2009, 11:16 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 9:58 |