У меня есть иерархия классов. Базовый класс использует некоторые параметры настройки, которые загружаются из файла (и могут быть загружены во время выполнения). Каждый производный класс может добавлять некоторые дополнительные параметры. Я ищу способ выделить массив параметров правильного размера в базовом конструкторе, чтобы мне не пришлось освобождать и перераспределять в производном классе. Я надеялся на что-то подобное, но это не работает (параметры всегда имеют 2 элемента):
class Base
{ static int nParms;
virtual int getNParms() { return nParms;}
float *parameters;
public:
Base()
{ parameters= new float[this->getNParms()];
parameters[0] = globalReloadableX;
parameters[1] = globalReloadableY;
}
};
int Base::nParams =2;
class Derived : public Base
{ static int nParms;
virtual int getNParms() { return nParms;}
public:
Derived() : Base()
{ parameters[2] = globalReloadableZ;
}
}
int Derived::nParams =3;
Я видел этот вопрос , но решение там не совсем работает для меня.
Я также попытался сделать параметры регулярным массивом в каждом классе:
class Base
{ float parameters[2]
...
class Derived : public Base
{ float parameters[3]
...
но из-за этого у Derived есть 2 отдельных массива.
Есть идеи?