我有一个类的层次结构。基类使用一些可从文件加载的调整参数(并在运行时重新加载)。每个派生类都可以添加一些其他参数。我正在寻找一种在基本构造函数中分配大小正确的参数数组的方法,这样就不必在派生类中进行分配和重新分配。我希望有这样的东西,但它不起作用(参数始终包含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;
我看过this question,但是那里的解决方案对我来说不太有效。
我还尝试在每个类中将参数设置为常规数组:
class Base
{ float parameters[2]
...
class Derived : public Base
{ float parameters[3]
...
但这使得Derived具有2个单独的数组。
有任何想法吗?
最佳答案
为什么不在基类的构造函数中将所需的数组大小作为参数传递呢?
(虚拟函数不调用派生类的原因是因为这是C++虚拟函数的工作方式;从概念上讲,直到派生类构造函数完成之前,对象的类型仍然是基类。)
关于c++ - 如何在基于派生类的大小的基础构造函数中分配数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/691014/