#include
using namespacestd;enumDirection {
North,
East,
South,
West,
};classMapSite {public:virtual void Enter() = 0;
};class Room : publicMapSite {public:
Room(introomNo):_roomNumber(roomNo) {};
MapSite*GetSide(Direction) const;virtual void SetSide(Direction direction, MapSite *) {
cout<< "Set the"
<<_roomnumber>
<
<
};intGetRoomNo() {return_roomNumber;
};virtual voidEnter() {
cout<< "Enter the Room." <
};private:
MapSite*_sides[4];int_roomNumber;
};class Wall : publicMapSite {public:
Wall() {};virtual voidEnter() {
cout<< "Enter the wall." <
};
};class Door : publicMapSite {public:
Door(Room* = 0, Room* = 0) {};virtual voidEnter()