VC 之定义类变量时出现 no appropriate default constructor available


下面这个是网上摘抄的示例:(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(){}。
 
 
问题得以解决!

你可能感兴趣的:(VC 之定义类变量时出现 no appropriate default constructor available)