У меня есть определение этого класса в файле .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 &) '".