Явная специализация шаблона для конструктора (g ++) - PullRequest
0 голосов
/ 04 октября 2018

У меня есть определение этого класса в файле .h:

class PolygonPath
{
  public:
    template<class T> explicit PolygonPath(const Polygon<T> &);
    template<class T> Polygon<T> toPolygon() const;
}

В файле .cpp я определяю свои методы.Затем я хотел бы определить явный шаблон для Polygon<float> и Polygon<long>.Итак, я определяю их так:

template class PolygonPath::PolygonPath<float>(const Polygon<float> &); //Fail
template class Polygon<float> PolygonPath::toPolygon<float>() const; //Ok
template class PolygonPath::PolygonPath<long>(const Polygon<long> &); //Fail
template class Polygon<long> PolygonPath::toPolygon<long>() const; //Ok

Для конструктора я не могу определить явную специализацию шаблона.У меня есть эта ошибка при компиляции: « ошибка:« PolygonPath »не является шаблоном класса ».Я также пытаюсь использовать следующий синтаксис:

template <> PolygonPath::PolygonPath(const Polygon<float> &)

Он компилируется, но я получаю еще одну ошибку по ссылке: "неопределенная ссылка на` urchin :: PolygonPath :: PolygonPath (urchin :: Polygon const &) '".

1 Ответ

0 голосов
/ 04 октября 2018

Удалите class из явной реализации вашего конструктора.

template PolygonPath::PolygonPath<long>(const Polygon<long> &);

и

template Polygon<long> PolygonPath::toPolygon<long>() const;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...