私はクラスEscapeRoomWrapper
とそれに由来する2つのクラスScaryRoom
とKidsRoom
を持っています。別のクラスにおいてベクトルから与えられた型の要素を返すには?
、Company
は、私はすべての部屋のオブジェクト(EscapeRoomWrapper
、ScaryRoom
、及びKidsRoom
)へのポインタのvector
を添加しました。私はCompany
クラスに関数を書く必要があります。私はそれに部屋の型を与え、それはすべての部屋のvector
に存在するそのタイプの部屋を返すべきです。
私はtypeid
を使用することを考えましたが、教授は私たちにそれを使用することを禁止しました。私の最後のアイデアはdynamic_cast
です。
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
};
この機能をどのように実装できますか?
std::vector<EscapeRoomWrapper*>& getAllRoomsByType(RoomType type) const
ジャスミンに、申し訳ありませんが、私はあなたの編集をキャンセルします。 – Stargateur
編集に感謝です – jasmin
あなたが持っているすべてのタイプの列挙型を作成し、各クラスに1つずつ割り当ててその方法を選択することができます。それは文字列比較より安いです。 * shrug * –