我正在尝试根据模板参数指定的 2D 或 3D 专门化一些几何函数。如果我为问题的玩具版本包含一些(非常损坏的)代码,则最好:
template <typename T, int d>
class Point
{
public:
int x;
int y;
int z;
T add ()
{
return T(0);
}
template <>
T add <T, 2> ()
{
return x + y;
}
template <>
T add <T, 3> ()
{
return x + y + z;
}
};
这段代码编译失败。我已经尝试了很多不同的模板参数格式和类定义的组合,但找不到一种方法来对 'd' 进行函数专业化,同时保留 'T' 通用。
在我的实际解决方案中,我试图计算梯度、曲率、插值等,专门用于 2D 或 3D 情况。有些事情,比如梯度计算,可以简单地使用 'd' 参数来限制 for 循环迭代。其他的,如插值,需要单独的 2D 和 3D 函数。
非常感谢任何提示!