这个问题如何解决(new新的构造函数数组)?

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:49:03
一般的,new一个新的类类型数组,我们一般是这样的:
Cc cnew = new int Cc[20];
但是这个类类型仅有带一个参数的构造函数,我们应该怎么办呢?如果依然用上面的办法可不可行呢?
#include <iostream>
using namespace std;
class Cc
{
private:
int mm;
public:
Cc(int i):mm(i){};
void display(void)
{
cout<<mm<<endl;
}
};

void main()
{
Cc cb = new Cc[5];
for(int j = 0;j != 5; ++j)
{
Cc[j].display;
}
}

我写了上面的代码,在BC6.0中提示[C++ Error] Unit1.cpp(17): E2248 Cannot find default constructor to initialize array element of type 'Cc'
我该怎么办?

首先
new 是分配空间,返回的是指向分配到的空间的指针
所以Cc cb = new Cc[5]; 肯定是不对的

其次
Cc是类名
Cc[j].display; 没这种用法的

修改如下:
:#include <iostream>
using namespace std;
class Cc
{
private:
int mm;
public:
Cc(int i):mm(i){};
void display(void)
{
cout<<mm<<endl;
}
};

void main()
{
int i;
Cc *cb[5];
for(i=0; i<5; ++i)
{
cb[i] = new Cc(i);
}

for(i=0;i<5; ++i)
{
cb[i]->display();
}

for(i=0;i<5; ++i)
{
delete cb[i]; //用了new就要用delete释放
}
}

楼上的帅哥,"Cc *cb[5]"; 是不是应该是"Cc *(cb)[5]";啊?