你好,我正在尝试创建一个类,它使用从学生类到研究生类的继承,但程序说它是不可访问的。
class Student
{
Student(char* n, int id)
{
name = new char[strlen(n) + 1];
strcpy_s(name,strlen(n)+1, n);
studentId = id;
}
~Student()
{
if (name != NULL)
delete[]name;
}
void printStudent()
{
cout << "Student ID: " << studentId << "\nStudent Name: " << name << endl;
}
protected:
int studentId;
char* name;
};
class GraduateStudent :public Student
{
public:
GraduateStudent(char* n, char* a, int id) : Student(n, id)
{
area = new char[strlen(a) + 1];
strcpy_s(area, strlen(a) + 1, a);
}
~GraduateStudent()
{
if (area != NULL)
delete[]area;
}
void printGrad()
{
printStudent();
cout << "Research area: " << area << endl;
}
private:
char* area;
};
程序应该打印出一个初始化的GraduateStudent类变量,调用printStudent();
您将int studentID;
和char*name;
设置为受保护的,因此可以在graduateStudent
中访问它们,以便轻松地执行以下操作:
void printGrad() {
cout << "Student ID: " << studentId << "\nStudent Name: " << name << endl;
cout << "Research area: " << area << endl;
}
或者,在student
的公共部分中使用decleareprintstudent();
。事实上,如果您没有任何规格说明,则类中的private
是默认的,而结构中的public
是默认的
类的默认访问是private的,这使得op的函数是private的。因此,您的构造函数是私有的。你应该看看这个。还有,这回答了你的问题吗?
thx for edits@Sweenish