Ошибка при попытке наследовать от класса с конструктором в C ++ - PullRequest
1 голос
/ 15 апреля 2019

У меня проблемы с моим кодом. Студенческий класс определяет строки studName и studRegNum как защищенные члены данных.Я создал конструктор, который имеет аргументы для инициализации членов данных.Класс studentAthlete унаследован от ученика и имеет личный элемент данных sport, в котором описывается спорт, которым занимается ученик.Оба класса имеют функцию-член identifier (), которая выводит информацию об ученике.

Когда я запускаю код, я получаю сообщение об ошибке «Нет подходящей функции для вызова функции student :: student ()» »

Пожалуйста, помогите.Я новичок в C ++ Ниже мой код:

#include <iostream>
using namespace std;

class student
{
protected:
    string studName;
    string studRegNum;
public:
    //Constructor prototype
    student(string name, string regNo);
    void identify();
};
//Constructor for student class
student::student(string name, string regNo):
studName(name), studRegNum(regNo)
{

}
class studentAthlete : public student
{
private:
    string member_sport;
    string get_member_sport(string member_Sport);
public:
    void identify();
    studentAthlete(string Sport);
};
studentAthlete::studentAthlete(string Sport):
member_sport(Sport)
{
}
string studentAthlete::get_member_sport(string member_Sport)
{
    member_Sport=member_sport;
    return member_sport;
}

void studentAthlete::identify()
{
    cout<<"Student Name: "<<studName<<endl;
    cout<<"Student Registration Number: "<<studRegNum<<endl;
    cout<<"Student sport: "<<member_sport<<endl;
}


int main()
{
    string studentName, registrationNO, studentSport;//Variables that will hold student information
    cout<<"Enter Student name: "<<endl;
    cin>>studentName;
    cout<<"Enter Registration number: "<<endl;
    cin>>registrationNO;
    cout<<"Enter Student Sport: "<<endl;
    cin>>studentSport;
    student st(studentName,registrationNO);
    studentAthlete sa(studentSport);
    cout<<"Student Details: ";sa.identify();

}

1 Ответ

0 голосов
/ 15 апреля 2019

Вы определили конструктор в student, который принимает два аргумента. У него нет конструктора по умолчанию (без аргумента), потому что вы его определили.

studentAthlete. не имеет конструктора Поэтому, когда вы создаете studentAthlete, он не может создать свой базовый класс. Есть два простых решения:

  • Создать конструктор без аргументов в student
  • Создайте конструктор в studentAthelete, который вызывает конструктор, который вы определили в student
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...