Создайте шаблон шаблона функции в заголовке и файле реализации - PullRequest
0 голосов
/ 12 мая 2018

Итак, у меня есть класс 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: слишком мало аргументов шаблона".

1 Ответ

0 голосов
/ 12 мая 2018

Вы не специализировали PolyLine для Container<T, alloc>, поэтому мы можем предоставить только определения конструкторов для специализации по умолчанию (PolyLine<T, Container, alloc>):

template<typename T, template<typename,typename> class Container, typename alloc>
PolyLine<T, Container, alloc>::PolyLine(size_t size, double distance) 
: Shape(), _n_points(size) 
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...