【发布时间】:2020-08-16 21:04:56
【问题描述】:
我有一个如下所示的输入:
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 向量中,对我来说最困难的部分是弄清楚如何存储第五个元素。
在 The Lion 行中,编译器说“no default constructor exists for class "Animals”
有人推荐我使用枚举,但我不知道如何分配枚举像
enum Data{
data1,data2,data3
}
(大象第 5 输入的数据 1,犀牛第 5 输入的数据 2,狮子第 5 输入的数据 3)
【问题讨论】:
标签: c++ class inheritance enums constructor