Ich habe eine Klasse, EscapeRoomWrapper
, und zwei Klassen, die davon abgeleitet sind, ScaryRoom
und KidsRoom
.Wie Elemente eines bestimmten Typs von einem Vektor zurückgegeben werden?
In einer anderen Klasse, Company
, fügte ich ein vector
von Zeigern auf alle Raumobjekte (EscapeRoomWrapper
, ScaryRoom
und KidsRoom
). Ich möchte eine Funktion in der Company
Klasse schreiben, wo ich es eine Art von Zimmer geben und es sollte alle Zimmer dieses Typs, die in der vector
aller Zimmer existieren, zurückgeben.
Ich dachte über die Verwendung typeid
, aber der professer verbot uns, es zu verwenden. Meine letzte Idee ist es, dynamic_cast
zu verwenden.
typedef enum{
SCARY_ROOM, KIDS_ROOM, BASE_ROOM
}RoomType;
class Company{
string CompanyName;
std::vector<EscapeRoomWrapper*> Rooms;
public:
std::vector<EscapeRoomWrapper*>& getAllRoomsByType(RoomType type) const;
};
class EscapeRoomWrapper{
EscapeRoom room;
std::vector<Enigma> Enigmas;
public:
// functions here
};
class ScaryRoom : public EscapeRoomWrapper {
private:
int ageLimit;
int NumOfScaryEnigmas;
public:
// functions for escary room
};
class KidsRoom : public EscapeRoomWrapper {
private:
int ageLimit;
public:
// functions for kidsroom
};
Irgendwelche Ideen, wie ich diese Funktion implementieren kann?
std::vector<EscapeRoomWrapper*>& getAllRoomsByType(RoomType type) const
Um Jasmin, Sorry, ich storniere Ihre Bearbeitung meiner schlechten. – Stargateur
es ist ok danke für die Bearbeitung – jasmin
Sie könnten eine enum aller Typen erstellen, die Sie haben, und einer Klasse zuweisen und diesen Weg wählen. Es ist billiger als ein String vergleichen. * Achselzucken * –