Итак, у меня есть класс PolyLine, который я пытаюсь обобщить, чтобы позволить контейнерам stl, таким как list или vector, действовать как контейнер класса. Я пытаюсь использовать функцию шаблона шаблона, чтобы сделать это:
template<typename T, template<typename, typename> class Container, typename alloc = std::allocator<T>>
class PolyLine : public CAD::Shape {
private:
size_t _n_points; //Number of points
Container<T, alloc> _pline;
public:
//Constructors
PolyLine(size_t, double);
PolyLine(const PolyLine&); //Copy constructor
//Print
void print();
//Operator overload functions
PolyLine& operator = (const PolyLine&);
};
И я пытаюсь реализовать функции в файле реализации следующим образом:
#include "PolyLine.hpp"
template<typename T, template<typename,typename> class Container, typename alloc = std::allocator<T>>
PolyLine<Container<T, alloc>>::PolyLine(size_t size, double distance) : Shape(), _n_points(size) {
};
Это не работает, и, видимо, мне нужно что-то исправить в объявлении PolyLine<Container<T,alloc>>
, но я не уверен, что. * Редактировать: ошибка: "PolyLine: слишком мало аргументов шаблона".