Название: Шаблоны cpp Отправлено: tux от Апрель 04, 2020, 22:50 Доброго времени суток.
Есть некоторое количество чужого кода, доставшегося по наследству. В нём 100500 функций, имеющие общий вид типа Код: int MegaClass::f0(void) решил сделать шаблон, чтобы хотя бы укоротить код Код: template<typename T> Как такой шаблон правильно написать? Эмоции за сам подобный код прошу оставить в стороне, вопрос не про это. Название: Re: Шаблоны cpp Отправлено: Авварон от Апрель 04, 2020, 23:10 У вас проблема в ку-ку:
Код: template<typename T> ку-ку - это имя _переменной_ типа Т которую вы передаете в шаблон (в оригинальных функциях ничего не передавалось). Это не имя типа. Название: Re: Шаблоны cpp Отправлено: tux от Апрель 04, 2020, 23:18 У вас проблема в ку-ку: Эээ... и как я потом в этот шаблон тип передам? Я ведь предполагал далее писать, что-то типаКод: template<typename T> ку-ку - это имя _переменной_ типа Т которую вы передаете в шаблон (в оригинальных функциях ничего не передавалось). Это не имя типа. Код: return template_f(XXX1); Название: Re: Шаблоны cpp Отправлено: Авварон от Апрель 04, 2020, 23:23 Теперь наоборот, вы передаете ТИП вместо переменной. "передача" типа в шаблон явно указывается в <>:
Код: return template_f<XXX1>(); Возможность не указывать тип - это бонус и называется Template argument deduction (https://en.cppreference.com/w/cpp/language/template_argument_deduction): Код: int m1 = std::max(100, 200); // ОК Название: Re: Шаблоны cpp Отправлено: tux от Апрель 04, 2020, 23:34 Мда. Век живи - век учись!
Спасибо! |