编译通过但是运行以后输入第二个字符串时候出错,也就是第一次调用函数的时候
#include
#include
using namespace std;
class Student{
private:
char num[10];//学号
char name[10];//姓名
public:
void setnum(char nu[ ]){strcpy(num,nu);}
void setname(char na[ ]){strcpy(name,na);}
};
class UserDatabase{
private:
Student *user;
int nElem;//学生的数量
public:
UserDatabase(){nElem = 0;}
void add_record(char *nu,char *na);
};
void UserDatabase::add_record(char *nu,char *na){ //添加学生信息,插入学生后仍然按升序排列
user[nElem].setnum(nu); //设置学号
user[nElem].setname(na); //设置姓名
nElem++;
}
int main(){
UserDatabase abc;
char nu[10];
char na[10];
for(int i = 0 ; i < 3 ; i++){
cin>>nu;
cin>>na;
abc.add_record(nu,na);
}
return 0;
}
你需要为user指针分配空间
#include<iostream>
using namespace std;
class Student{
private:
char num[10];//学号
char name[10];//姓名
public:
void setnum(char nu[ ]){strcpy(num,nu);}
void setname(char na[ ]){strcpy(name,na);}
};
class UserDatabase{
private:
Student *user;
int nElem;//学生的数量
public:
UserDatabase(){nElem = 0;user=new Student[3];}
void add_record(char *nu,char *na);
};
void UserDatabase::add_record(char *nu,char *na){ //添加学生信息,插入学生后仍然按升序排列
user[nElem].setnum(nu); //设置学号
user[nElem].setname(na); //设置姓名
nElem++;
}
int main(){
UserDatabase abc;
char nu[10];
char na[10];
for(int i = 0 ; i < 3 ; i++){
cin>>nu;
cin>>na;
abc.add_record(nu,na);
}
return 0;
}