我有一个类的层次结构.基类使用一些可从文件加载的调整参数(并在运行时可重新加载).每个派生类可以添加一些额外的参数.我正在寻找一种方法在基础构造函数中分配一个正确大小的参数数组,这样我就不必在派生类中释放和重新分配.我希望这样的东西,但它不起作用(参数总是有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个独立的数组.
有任何想法吗?
为什么不将所需的数组大小作为参数传递给基类的构造函数?
(虚函数不调用派生类的原因是因为这就是C++虚函数的工作方式;从概念上讲,在派生类构造函数完成之前,对象的类型仍然是基类.)