回 帖 发 新 帖 刷新版面

主题:关于类指针数组(动态数组)

问题如下:
CBase
{
//some info
  const CBase& operator=(const CBase& obj);//已实现的
};

CDerive
{
private:
  int sum;
  CBase* rec;
public:
  void add();
};

想在CDerive类对象中动态创建CBase类对象的数组。
如:
CDerive::CDerive
{
  sum=1;
  rec=new CBase[1];
  //但这不知道怎样初始化rec[0]这个对象
}

void CDerive::add()
{
  CBase* new_rec;
  new_rec=new CBase[++sum];
  for(int i=0;i<sum-1;i++)
     new_rec[i]=rec[i];
 //something had done with new_rec[i] just here
 delete rec;
 rec=new_rec;
}
有没有什么途径可以做到呢?
谢谢大家啦。

回复列表 (共2个回复)

沙发

[quote]//但这不知道怎样初始化rec[0]这个对象[/quote]
要初始化一个对象,可以在构造函数里编写
也可以写一个单独的初始化函数,然后调用即可呀~~
不知你的问题在哪

板凳

我觉得你如果是想在Derive类里保存一个指针类数组的话就不能用CBase* rec;应该用二重指针吧
CBase** rec;或者用一个CBase*的链表来做.其实你的ADD函数就相当于连到链尾了吧.
按你现在的思路,想用二重指针的话,改构造函数吧.
CDerive::CDerive
{
#define MAX_LEN   50
  sum=1;
  rec=new CBase*[MAX_LEN];
  rec[0] = new CBase[1];
 }

我来回复

您尚未登录,请登录后再回复。点此登录或注册