C++中类对象数组的初始化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中类对象数组的初始化相关的知识,希望对你有一定的参考价值。
以下是我是部分程序
先是对一个类的定义,请检查一下,我的结构函数正确吗?
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)
请求帮助啊!!~~~~~~着急!~
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);本回答被提问者采纳
以上是关于C++中类对象数组的初始化的主要内容,如果未能解决你的问题,请参考以下文章