class Reward { public: enum Type {GOLD = 1, ALLIES= 2, ITEM = 3}; //! Standard constructor Reward(Type type); ~Reward(); //! Get the type of the reward Uint32 getType() const { return d_type; } protected: //! Type of the reward Uint32 d_type; }; class Reward_Gold : public Reward { public: Reward_Gold(Uint32 gold); ~Reward_Gold(); Uint32 getGold() const {return d_gold;} private: Uint32 d_gold; }; class Reward_Allies: public Reward { public: Reward_Allies(Uint32 armytype, Uint32 count); ~Reward_Allies(); Uint32 getArmytype() const {return d_armytype;} Uint32 getNoOfAllies() const {return d_count;} private: Uint32 d_armytype; Uint32 d_count; };