Как назначить Enum производному классу - PullRequest
0 голосов
/ 02 мая 2020

У меня есть вход, который выглядит следующим образом:

VadaszToni 45
Elephant helyszin1 datum1 23 45
Elephant helyszin1 datum1 56 82
Elephant helyszin1 datum2 89 110
Elephant helyszin2 datum1 99 2
Rhino helyszin1  datum3 120 45
Rhino helyszin1 datum3 12 21
Rhino helyszin1 datum3 98 99
Lion helyszin3 datum4 12 male
Lion helyszin3 datum4 65 male
Lion helyszin3 datum4 120 female
Lion helyszin3 datum5 200 male
Lion helyszin3 datum5 250 male
Lion helyszin3 datum5 2 female

И класс

class Animals {



protected:                  
    std::string elejtés_helye;
    std::string elejtés_ideje;
    int súly;        
    int plusz_adat;   

    Animals(const std::string& hely, const std::string& idő, int tomeg, int pluszadat) :elejtés_helye(hely), elejtés_ideje(idő), súly(tomeg),plusz_adat(pluszadat) {};

public:
    virtual std::string fajta() = 0;
    virtual Animals* current() = 0;

};

class Elephant : public Animals {

public:
    Elephant(const std::string& hely, const std::string& idő, int tomeg, int elefant_szarv):Animals(hely,idő,tomeg,elefant_szarv) {};

    std::string fajta() override { return "Elephant"; };
    Elephant* current() override { return this; };

};


class Rhino : public Animals {

public:
    Rhino(const std::string& hely, const std::string& idő, int tomeg, int orszarvu_szarva) :Animals(hely, idő, tomeg, orszarvu_szarva) {};

    std::string fajta() override { return "Rhino"; };
    Rhino* current() override { return this; };

};

class Lion : public Animals {

public:
    Lion(const std::string& hely, const std::string& idő, int tomeg, const std::string& oroszlan_neme) {

        elejtés_helye = hely;
        elejtés_ideje = idő;

        if (oroszlan_neme=="male")
        {
            plusz_adat = 1;

        }
        else
        {
            plusz_adat = 2;
        }

    };


    std::string fajta() override { return "Lion"; };
    Lion* current() override { return this; };

};

Я хотел бы сохранить данные в векторе Animal, и самая сложная часть для меня это выяснить, как хранить пятый элемент. В строке Lion компилятор говорит: «no default constructor exists for class "Animals» Кто-то порекомендовал мне использовать Enumes, но я не знаю, как назначить Enum как

enum Data{
data1,data2,data3
}

(data1 для входа Elephant 5, data2 для входа Rhino 5, data3 для 5-го входа Lion)

1 Ответ

0 голосов
/ 02 мая 2020

Ваш Lion конструктор должен читать:

Lion(const std::string& hely, const std::string& idő, int tomeg, const std::string& oroszlan_neme) :
    Animals(hely, idő, tomeg, oroszlan_neme) { ...

(как вы это сделали для Rhino и Elephant).

Кроме того, я не вижу смысла в current() метод, и я не понимаю название вашего вопроса.

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