C++ C++,具有set和get函数的学生类
我试着为一个学生写一个班级的信息(姓名、ID号和学位),这些信息将打印在屏幕上;但我不知道错误在哪里C++ C++,具有set和get函数的学生类,c++,class,object,C++,Class,Object,我试着为一个学生写一个班级的信息(姓名、ID号和学位),这些信息将打印在屏幕上;但我不知道错误在哪里 #include <iostream> #include <conio.h> using namespace std; class Student { private: char name; int idnumber; char degree; public: Student(char,int,char); void setNam
#include <iostream>
#include <conio.h>
using namespace std;
class Student {
private:
char name;
int idnumber;
char degree;
public:
Student(char,int,char);
void setName(char n){name = n;}
int getName(){return name;}
void setIdnumber(char id){idnumber = id;}
int getIdnumber(){return idnumber;}
void setDegree(char d){degree = d;}
int getDegree(){return degree;}
};
Student::Student(char n,int id,char d){
name = n;
idnumber = id;
degree = d;
}
int main(){
Student s1, s2;
s1.setName(Sara);
s1.setIdnumber(333);
s1.setDegree(A);
s2.setName(Jack);
s2.setIdnumber(222);
s2.setDegree(B);
cout << "name: " << s1.getName() << ",IDnumber: " << s1.getIdnumber() << ",Degree: " << s1.getDegree() << endl;
cout << "name: " << s2.getName() << ",IDnumber: " << s2.getIdnumber() << ",Degree: " << s2.getDegree() << endl;
getch();
return 0;
}
#包括
#包括
使用名称空间std;
班级学生{
私人:
字符名;
国际电话号码;
焦度;
公众:
学生(字符,整数,字符);
void setName(charn){name=n;}
int getName(){return name;}
void setIdnumber(字符id){idnumber=id;}
int getIdnumber(){返回idnumber;}
void setDegree(chard){degree=d;}
int getDegree(){return degree;}
};
学生::学生(字符n,int-id,字符d){
name=n;
idnumber=id;
度=d;
}
int main(){
学生s1、s2;
s1.设置名称(Sara);
s1.setIdnumber(333);
s1.凝结度(A);
s2.设置名称(杰克);
s2.设置识别号(222);
s2.凝结度(B);
coutchar是单个字符,不是字符串。请尝试改用std::string
此外,要声明字符串文字,请将字符串括在引号中“”
例如:
另外,要使用std::string,您需要#include
字符是单个字符,而不是字符串。请尝试改用std::string
此外,要声明字符串文字,请将字符串括在引号中“”
例如:
另外,要使用std::string,您需要#包括显然,您有以下问题:
Student s1, s2;
这将尝试调用默认构造函数
。但是,您定义了一个包含3个参数的构造函数,这将禁止编译器为您生成默认构造函数,因此您将无法创建这些对象,这实际上会使后续成员函数调用失败
s1.setName(Sara);
setName
将char
类型作为参数类型,如果您指的是字符串文字“Sara”
,则您将遇到问题。在其他函数调用中也会发现类似问题。您应该解决此问题
同时,您应该更喜欢使用成员初始化列表
,而不是使用构造函数体中的赋值来初始化您的成员
Student::Student(char n,int id,char d): name(n), idnumber(id), degree(d){}
请确保您的成员按姓名、ID号码、学位的顺序声明。显然,您有以下问题:
Student s1, s2;
这将尝试调用默认构造函数
。但是,您定义了一个包含3个参数的构造函数,这将禁止编译器为您生成默认构造函数,因此您将无法创建这些对象,这实际上会使后续成员函数调用失败
s1.setName(Sara);
setName
将char
类型作为参数类型,如果您指的是字符串文字“Sara”
,则您将遇到问题。在其他函数调用中也会发现类似问题。您应该解决此问题
同时,您应该更喜欢使用成员初始化列表
,而不是使用构造函数体中的赋值来初始化您的成员
Student::Student(char n,int id,char d): name(n), idnumber(id), degree(d){}
确保按照名称、ID号、学位的顺序声明您的成员
您的代码几乎没有问题
char name;
Student(){}
s1.setDegree(A);
这里的name只是一个char文本,所以当您试图将字符串Sara传递给它时,它将只存储一个文本。所以将name更改为array或pointer
char name[10] or char *name
同样,在传递名称时,使用双引号传递它,如“Sara”。将函数中的所有形式参数更改为char数组或指针
Student s1, s2;
在这里,当创建对象s1和s2时,它将调用默认构造函数,这是您没有提供的,所以在代码中包括默认构造函数
char name;
Student(){}
s1.setDegree(A);
这里您试图传递的是一个文本,而不是一个变量,所以请引用它
s1.setDegree('A');
C++提供了字符串数据类型,很容易使用wrt to char或char[],所以使用它。您可以像使用int、double等其他数据类型一样对其进行操作。
这将避免您使用strcpy()复制字符串来指定数组长度的麻烦
string name;
您的代码几乎没有问题
char name;
Student(){}
s1.setDegree(A);
这里的name只是一个char文本,所以当您试图将字符串Sara传递给它时,它将只存储一个文本。所以将name更改为array或pointer
char name[10] or char *name
同样,在传递名称时,使用双引号传递它,如“Sara”。将函数中的所有形式参数更改为char数组或指针
Student s1, s2;
在这里,当创建对象s1和s2时,它将调用默认构造函数,这是您没有提供的,所以在代码中包括默认构造函数
char name;
Student(){}
s1.setDegree(A);
这里您试图传递的是一个文本,而不是一个变量,所以请引用它
s1.setDegree('A');
C++提供了字符串数据类型,很容易使用wrt to char或char[],所以使用它。您可以像使用int、double等其他数据类型一样对其进行操作。
这将避免您使用strcpy()复制字符串来指定数组长度的麻烦
string name;
你几乎什么都没告诉我们。我们知道错误的地方比你少。请你说一下编译器所说的错误和哪条线是生成它的。我会重新阅读一本C++编程的书,因为你在代码中有很多错误。你几乎什么都没告诉我们。我们知道错误的地方比你少。请把错误和什么帖出来。E编译器说,它正在生成它。我会重新阅读一本关于C++编程的书,因为你在代码中有很多错误。“萨拉”是字符串文字,无法传递给接受char
的成员函数。哦,我甚至没有看到所有这些…好像他们甚至没有通过编译器运行过。也许他们只是需要正确的代码,他们认为使用它作为错误解析器比安装编译器更容易……”Sara“是字符串文字,无法传递给接受char
的成员函数。哦,我甚至没有看到所有这些…好像他们甚至没有通过编译器运行过。也许他们只是需要正确的代码,他们认为使用它作为错误解析器比安装编译器更容易。。。