下面这个是网上摘抄的示例:(http://zhidao.baidu.com/question/161985869.html)
#include<iostream.h> #include<string.h> #define NUM 100 class Student { private: int name; int sex; int birthday; int phone; public: Student(int n,int s,int b,int p); ~Student(); void input(); void output(); }; Student::Student(int n,int s,int b,int p) { cout<<"Exeduting constructor````"<<endl; name=n; sex=s; birthday=b; phone=p; cout<<name<<','<<sex<<','<<birthday<<','<<phone<<endl; } Student::~Student() { cout<<"Exeduting destructor````"<<endl; cout<<name<<'_'<<sex<<'_'<<birthday<<'_'<<phone<<endl; } void Student::input() { cout<<"姓名: "<<" "; cin>>name; cout<<"性别(0代表女生,1代表男生)"<<" "; cin>>sex; cout<<"出生年月日:"<<" "; cin>>birthday; cout<<"联系电话:"<<" "; cin>>phone; } void Student::output( ) { cout<<"输出信息:"<<endl; cout<<name<<","<<sex<<","<<birthday<<","<<phone<<endl; } void main(int n,int s,int b,int p) { Student stu[NUM]; int i,j; cout<<"input student number,number<=100:"<<endl; cin>>j; for (i=0;i<j;i++) { cout<<"请按照姓名、性别、出生年月日、联系电话的顺序输入第"<<"i+1"<<"个学生信息"<<endl; stu[i].input(); stu[i].output(); } }
问题表现:编译时出现类 Student : no appropriate default constructor available
问题解决:
增加一个缺省的构造函数Student()就可以了。 你在Student stu[NUM]时创建对象,但是没有给初始化的参数,所以程序就需要缺省的构造函数。如果你不声明Student(int n,int s,int b,int p);那么系统会自动为你创建一个缺省的构造函数;但是你声明了,系统就不自动创建了,需要你自己手动添加。
所以具体讲,
在 定义 Student stu[NUM] 前,必须完成一下步骤,在 Student类的h文件里,添加 Student();声明。然后在Student类的CPP文件里添加 Student(){}。
问题得以解决!