C++中类对象数组的初始化

以下是我是部分程序先是对一个类的定义,请检查一下,我的结构函数正确吗?classStudent{private:intNum,Chinese,Maths,English;... 以下是我是部分程序
先是对一个类的定义,请检查一下,我的结构函数正确吗?
class Student
{
private:
int Num,Chinese,Maths,English;
float Total;
char Name[20];
public:
Student(char name[20],int num,int chinese,int maths,int english )
{
int n;
for(n=0;n<strlen(name);n++)Name[n]=name[n];
Num=num;
Chinese=chinese;
English=english;
Maths=maths;
Total=maths+chinese+english;
}

};
下面是我MAIN函数里的初始化程序
Student std[5];
for(i=0;i<5;i++)
{
cin>>name[20]>>num>>chinese>>maths>>english;
std[i](name[20],num,chinese,maths,english);
for(j=0;j<20;j++)
name[j]='\0';
}
编译错误提示如下:
--------------------Configuration: aaaa - Win32 Debug--------------------
Compiling...
aaaa.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\aaaa\aaaa.cpp(30) : error C2512: 'Student' : no appropriate default constructor available
C:\Program Files\Microsoft Visual Studio\MyProjects\aaaa\aaaa.cpp(41) : error C2064: term does not evaluate to a function
Error executing cl.exe.

aaaa.exe - 2 error(s), 0 warning(s)
请求帮助啊!!~~~~~~着急!~
展开
 我来答
百度网友d127579
推荐于2016-11-26 · TA获得超过1663个赞
知道小有建树答主
回答量:634
采纳率:0%
帮助的人:0
展开全部
1、当你定义了构造函数以后,默认的构造函数就不起作用了。所以你得类里边就没有默认的构造函数,即:没有没有参数的构造函数。所以Student std[5]; 是错误的。

2、所有构造函数都是在定义时候就调用,定义以后的调用就不叫初始化了,而是赋值。
所以std[i](name[20],num,chinese,maths,english); 就是错误的。

3、解决方法:
你只能定义一系列指针,然后再每次构造的时候调用new来构造类对象。
如:
Student *std[5];
for(i=0;i<5;i++)
{
cin>>name[20]>>num>>chinese>>maths>>english;
std[i]=new Student(name[20],num,chinese,maths,english);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式