gpt4 book ai didi

c++ - 构造函数的显式模板特化 (g++)

转载 作者:行者123 更新时间:2023-11-27 22:37:20 25 4
gpt4 key购买 nike

我在 .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&)' 的 undefined reference ”。

最佳答案

删除 class来自构造函数的显式实例化。

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

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

关于c++ - 构造函数的显式模板特化 (g++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52651035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com