Могу ли я использовать typedef для длины массива? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть класс, который я хочу использовать для представления обобщенной точки на кривой Безье.Прямо сейчас это выглядит так:

//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, которые я предпочел бы не использовать в заголовке.

Есть ли способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...