Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как задать параметр шаблона через переменную

10K
17 мая 2012 года
Frenzyk
41 / / 16.01.2009
допустим есть шаблоные классы и функции, например такой:
 
Код:
template<class float_double, unsigned int MatrixSize>struct MATRIX_POINTERS
Далее
 
Код:
if(1)
MATRIX_POINTERS<float, XMatrixSize> * matrixPointers = new MATRIX_POINTERS<float, XMatrixSize>;
else
MATRIX_POINTERS<double, XMatrixSize> * matrixPointers = new MATRIX_POINTERS<double, XMatrixSize>;
Можно ли как-то шаблон типа данных передать через переменную?
Тоесть чтоб было что-то типа:

 
Код:
if(1)
type T = float ;
else
type T = double;

MATRIX_POINTERS<T, XMatrixSize> * matrixPointers = new MATRIX_POINTERS<T, XMatrixSize>;
277
21 мая 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: Frenzyk
А с пмощью каких дирректив можно было сделать?


 
Код:
#define INT

#ifdef INT
mytemplate <int> a;
#else
mytemplate <double> a;
#endif
277
18 мая 2012 года
arrjj
1.7K / / 26.01.2011
Нет. Шаблоны обрабатываются на этапе компиляции. В скомпилированом ехе у тебя уже конкретно прописаны классы.
имхо 2 решения:
1) Препроцессорные директивы (оставить шаблонную реализацию) <- тип данных в рантайме не поменяешь
2) Наследование (переделать в классы) <- для каждого типа данных придется определять класс
10K
18 мая 2012 года
Frenzyk
41 / / 16.01.2009
Ясно. Я просто сделал в if - else шаблонные функции с целью передать нужный шаблон, а внутри этих функций уже нужные мне шаблонные структуры и классы.

А с пмощью каких дирректив можно было сделать?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог