![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
mezmay |
![]()
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: ![]() ![]() ![]() |
Проблема такая: хочу создать класс для обработки массивов чисел. Элементами могут быть вещественный или комплексный short, int, float, double. Программа должна работать примерно так: открываю файл, выбираю тип данных (например, комплексный float) и делаю необходимые преобразования массивов. Вопрос: как хранить прочитанный массив в классе? если например создать поле void *data и после открытия делать myObject.data = new scplx[n]; - то как передавать тип в методы? можно конечно создать enum types{ INT, FLOAT, ...} и в каждом методе делать switch (TYPE){ case INT: ..... case FLOAT: ...} но так слишком много case'ов придется везде вставлять. Есть ли какое-то нормальное решение этой проблемы?
вроде бы для подобных целей существуют шаблоны, но опять же - как задать шаблону тип во время выполения? |
|
|
![]() |
Влад |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: ![]() ![]() ![]() |
Ну, а что здесь непонятного? Вот тебе пример, в остальном разберешься сам:
С boost::variant все то же самое....... Сообщение отредактировал Влад - 29.7.2009, 10:27 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 2:32 |