【发布时间】:2018-03-21 16:26:57
【问题描述】:
我正在为我的班级编写我的第一个 C++ 程序。我对这个程序真的很陌生,所以我有很多东西要学。在我的程序中,我想用 Undergrad/grad/gradassist 派生类创建一个 Student 类。 name 和 SSN 字段必须在一个 char 数组中(我知道字符串更有意义,但老师需要一个 char 数组)。该程序大部分工作正常,只是它不在我的 char 数组中打印任何内容。请帮忙!
#include <iostream>;
using namespace std;
class Student {
protected:
char name[21];
char ssn[10];
float gpa;
int credits;
public:
Student::Student() {};
Student(const char n[], const char ss[], float& gp, int& cred) {
name[21] = n[21];
ssn[10] = ss[10];
gpa = gp;
credits = cred;
}
virtual void print() {
cout << "Name: " << name << endl;
cout << "SSN: " << ssn << endl;
cout << "GPA: " << gpa << endl;
cout << "Credits: " << credits << endl;
}
virtual float tuition() const = 0;
};
class undergrad : public Student {
protected:
float undergrad_rate;
char* year;
public:
undergrad::undergrad() {}
undergrad(float ugr, char* yr, const char n[], const char ss[], float&
gp, int& cred) :
Student(n, ss, gp, cred), undergrad_rate(ugr), year(yr){}
void set_year(char* yr) {
year = yr;
}
char* getYear() {
return year;
}
float getRate() {
return undergrad_rate;
}
void print() {
Student::print();
cout << "Undergrad rate: " << undergrad_rate << endl;
cout << "year: " << year << endl;
}
float tuition() {
//cout << "The tuition is $35000" << endl;
return 35000;
}
};
class grad : public Student {
protected:
float grad_rate;
char* thesis;
public:
};
int main(){
char* jr = "Junior";
char* sr1 = "Senior";
char* fr = "Freshman";
char* sr = "Sophmore";
undergrad g(380, jr, "M", "000111222", 4.0, 12);
g.print();
system("pause");
return 0;
}
【问题讨论】:
-
name[21] = n[21]->strcpy(name, n) -
name[21] = n[21];这并不像你想象的那样,和访问这两个数组之外。也请使用 std::string 代替 char[]。 -
我知道字符串更有意义,但老师需要一个 char 数组 -- 在你学习的时候找另一位老师
C加入一些 C++ 语法,不是 C++。 -
具有Undergrad/grad/gradassist基类的学生班。你是说派生类吗?
-
是的,我修正了错误