我有一个要用于表示贝塞尔曲线上广义点的类。现在看起来像这样:
//BezierCurvePoint.h
class BezierCurvePoint
{
int _pointDepth;
double* _pointData;
int _layerDepth;
double* _layerData;
public:
BezierCurvePoint(int pointDepth, int layerDepth = 0);
//Lots of operator methods to make math easier
}
//BezierCurvePoint.cpp
BezierCurvePoint::BezierCurvePoint(int pointDepth, int layerDepth) :
_pointDepth(pointDepth),
_layerDepth(layerDepth)
{
_pointData = pointDepth ? new double[pointDepth] : nullptr;
_layerData = layerDepth ? new double[layerDepth] : nullptr;
}
_pointData表示该点的坐标,而_layerData是我要针对每个点存储的一些额外信息,例如线宽和倾斜度。不幸的是,我也在创建和删除许多微小的数组。
我希望能够对此点类型创建变体。因此,我将使用pointDepth = 2和layerDepth = 1的一个版本,以及pointDepth = 3和layerDepth = 2的另一个版本。只要他们知道不同数组的深度,我就可以使用一些通用方法
当我在一条曲线中使用我的点时,它们都将具有相同的pointDepth和layerDepth,如果我能找出这种更一般情况的typedef(或其他一些改进),这将非常有用。我正在使用固定长度的数组,而不是分配它们。这也将使调试更加容易。
我不想使用模板,因为我在.cpp中定义了一些冗长的函数,希望将其保留在标头之外。
有没有办法做到这一点?