注册 登录
编程论坛 C++教室

请问为啥建立的对象不能用呢

唐兵 发布于 2013-06-01 18:08, 599 次点击
#include <iostream>
using namespace std;
class Student
{public:
void max(Student *arr)
{float max_score=arr[0].score;
int k=0;
for(int i=1;i<5;i++)
if(arr[i].score>max_score) {max_score=arr[i].score;k=i;}
cout<<arr[k].num<<" "<<max_score<<endl;
}
Student(int n,float s):num(n),score(s){}
int num;
float score;
};
void main()
{Student o;这儿出错,错误提示信息:error C2512: 'Student' : no appropriate default constructor available
    Student stud[5]={
Student(101,78.5),Student(102,85.5),Student(103,98.5),
Student(104,10.0),Student(105,95.5)};
void max(Student* );
Student *p=&stud[0];
o.max(p);
}
6 回复
#2
yuccn2013-06-01 20:24
没有找对合适的构造函数
Student o;这儿出错,错误提示信息:error C2512: 'Student' : no appropriate default constructor available
改成Student o(0,0); 或者其他的参数就行了

注意一下代码的缩进
#3
我有我梦2013-06-02 19:08
{Student o;这儿出错,错误提示信息:error C2512: 'Student' : no appropriate default constructor available,这里的错误我同意2楼主的以见,你的确要注意缩进了,不然很难看的!!!!!!
#4
q2152362132013-06-02 19:31
Student 根本就没有不带参 的构造函数!
#5
justlxy2013-06-03 11:56
没有有默认值的构造函数啊!
#include <iostream>
 using namespace std;
 class Student
 {public:
    void max(Student *arr)
    {
        float max_score=arr[0].score;
        int k=0;
        for(int i=1;i<5;i++)
        if(arr[i].score>max_score) {max_score=arr[i].score;k=i;}
        cout<<arr[k].num<<" "<<max_score<<endl;
    }
    Student(int n=0,float s=0):num(n),score(s){}        //注意此处的修改,给定默认值即可。
    int num;
    float score;
 };
 void main()
 {
    Student o;//这儿出错,错误提示信息:error C2512: 'Student' : no appropriate default constructor available
    Student stud[5]={
    Student(101,78.5),Student(102,85.5),Student(103,98.5),
    Student(104,10.0),Student(105,95.5)};
    void max(Student* );
    Student *p=&stud[0];
    o.max(p);
 }
#6
唐兵2013-06-03 16:40
回复 2楼 yuccn
嗯,谢谢
#7
唐兵2013-06-03 16:40
回复 5楼 justlxy
哈,谢了哈
1