构造函数 (g++) 的显式模板专用化
Explicit template specialization for constructor (g++)
我在.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
对于构造函数,我无法定义显式模板专用化。我在编译时遇到此错误:">错误:'多边形路径'不是类模板"。 我也尝试使用这种语法:
template <> PolygonPath::PolygonPath(const Polygon<float> &)
它可以编译,但我在链接中收到另一个错误:"未定义对'海胆::P olygonPath::P olygonPath(urchin::P olygon const&('的引用"。
从构造函数的显式实例化中删除class
。
template PolygonPath::PolygonPath<long>(const Polygon<long> &);
和
template Polygon<long> PolygonPath::toPolygon<long>() const;
相关文章:
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 模板专用化(按容器):value_type
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- C++:部分模板专用化用例
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 为什么依赖模板类型在部分专用化中不可推导?
- 如何为静态常量模板化专用整数值分配存储
- 模板类的部分模板专用化,如 std::function
- 合并一组模板专用化