当前位置:  开发笔记 > 编程语言 > 正文

如何在基础构造函数中分配基于派生类的大小的数组?

如何解决《如何在基础构造函数中分配基于派生类的大小的数组?》经验,为你挑选了1个好方法。

我有一个类的层次结构.基类使用一些可从文件加载的调整参数(并在运行时可重新加载).每个派生类可以添加一些额外的参数.我正在寻找一种方法在基础构造函数中分配一个正确大小的参数数组,这样我就不必在派生类中释放和重新分配.我希望这样的东西,但它不起作用(参数总是有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个独立的数组.

有任何想法吗?



1> Daniel Earwi..:

为什么不将所需的数组大小作为参数传递给基类的构造函数?

(虚函数不调用派生类的原因是因为这就是C++虚函数的工作方式;从概念上讲,在派生类构造函数完成之前,对象的类型仍然是基类.)

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有