Я пытаюсь создать простую консольную систему отображения сведений об ученике, в которой есть 2 класса: ученик класса (базовый класс) с переменными-членами для имени и регистрационного номера и класс studentAthlete (производный класс) со строкой спортивного типа.
Код компилируется успешно, но во время выполнения запрашивает только сведения об ученике, но не отображает детали, как ожидалось бы, когда я вызываю функцию identifier ().
В блоках кода ошибка может не отображаться, но при онлайн-компиляции, такой как https://www.onlinegdb.com/online_c++_compiler, это показывает, что в коде имеется ошибка сегментации.
Пожалуйста, помогите в случае необходимости.
Мой код точно (в целом), как показано ниже:
#include <iostream>
using namespace std;
/**Base class**/
class student
{
protected:
string studName, studRegNum;
public:
student(string stdName, string regNo);
/**To define friendly class that is
Common to both classes**/
friend void identify();
};
/**constructor for class student**/
student::student(string stdName, string regNo)
{
studName = stdName;
studRegNum = regNo;
}
/**Derived class**/
class studentAthlete : public student
{
private:
string member_sport;
public:
/**To create constructor for class studentAthlete within class**/
studentAthlete(string student_sport):student(studName, studRegNum)
{
member_sport = student_sport;
}
/**To define friendly class that is
Common to both classes**/
friend void identify();
};
/**To display student information**/
void identify()
{
studentAthlete sa(sa.member_sport);
cout<<"Student Name: "<<sa.studName<<endl;
cout<<"Student Registration Number: "<<sa.studRegNum<<endl;
cout<<"Student Sport: "<<sa.member_sport<<endl;
}
int main()
{
string StudentName, StudentRegistrationNo, StudentSport;
/**To get & set student name from user**/
cout<<"Enter student name: "<<endl;
cin>>StudentName;
/**To get & set Student Registration No from user**/
cout<<"Enter Student Registration No: "<<endl;
cin>>StudentRegistrationNo;
/**To get & set Student Sport from user**/
cout<<"Enter Student Sport: "<<endl;
cin>>StudentSport;
/**To pass student values to their respective constructors**/
student st(StudentName,StudentRegistrationNo);
studentAthlete sa(StudentSport);
/**To display student information**/
identify();
return 0;
}