Удобно вызывать шаблонные классы
Столкнулась с тем что неудобно прописывать шаблоны каждый раз в конструкторе класса. Пример
template<class T>
class A{
T &type_class;
public:
A(T &type_class_)
:type_class(type_class_)
{};
};
class B{};
class C{};
int main()
{
B b;
A<B> a{b};
std::vector<A<B>> ab;
return 0;
}
получается если нужно создавать несколько классов А нужно обязательно прописывать в какому классу шаблона относится. Как можно доработать, не прописывая A несколько раз?
P.S знаю что можно использовать наследование, я хочу разобраться как можно удобно пользоваться шаблонами
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Если у Вас компилятор с поддержкой 17 стандарта и для компилятора очевиден тип, то он может сам вывести.
A<B> a{b};
можно записать вот так
A a{b};
и компилятор догадается.
А вот std::vector<A<B>> ab; - никак. компилятору не очевиден тип переменной ab без подсказки. Но если подсказать
std::vector ab{a,a,a};
или
std::vector ab{10,a};
то все у компилятора получится.