为了账号安全,请及时绑定邮箱和手机立即绑定

想要建立一个对象数组,内放5个学生的数据(学号成绩),请问我的程序错在哪里?

想要建立一个对象数组,内放5个学生的数据(学号成绩),请问我的程序错在哪里?

C++ C
慕容3067478 2022-01-04 19:15:35
#include<iostream>using namespace std;class Student{public:Student(int,int);void display();private:int number;int score;};Student::Student(int a,int b){number=a;score=b;}void Student::display(){cout<<number<<":"<<score<<endl;} int main(){Student* p;p= new Student[5]; //为什么总是提示没有合适的构造函数,这里我是想动态建立一个包含5个对象对象数组,并用指针指向首对象,并不是想调用构造函数Student student[5]={Student(1,89),Student(2,92),Student(3,98),Student(4,95),Student(5,81)}; int i;for(i=0;i<5;i=i+2){p[i].display();}cout<<endl;delete p;return 0;}
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

构造函数不对,是两个参数(int,int)。
所有你得:
p=new Student(1,1)[5];
否则自己加一个构造函数
Student::Student();
然后再加一个输入的函数input(...);
才能p=new Student()[5];
*(p+1).input(...);

查看完整回答
反对 回复 2022-01-09
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

Student* = new Student[5];

要那样开辟内存,你必须要有默认参数的构造函数,就是说


class Student{public:Student(); // 默认参数的构建(比如,默认name,0分)Student(int,int);void display();private: int number; int score;};


查看完整回答
反对 回复 2022-01-09
?
桃花长相依

TA贡献1860条经验 获得超8个赞

Student()
{}
自己再加一个空构造函数,当你自己定义构造函数时,系统不再生成默认空构造函数!

查看完整回答
反对 回复 2022-01-09
  • 3 回答
  • 0 关注
  • 378 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信