#ifndef EXAMPLE_H #define EXAMPLE_H #include #include class Animal { protected: std::string name_; public: // Construct an animal with a name Animal(const char* name); // Destruct an animal ~Animal(); // Return the animal's name const char* get_name() const; }; class Zoo { private: typedef std::vector AnimalsType; typedef AnimalsType::iterator IterType; protected: AnimalsType animals; public: Zoo(); ~Zoo(); /* Create a new animal */ static Animal* create_animal(const char* name); /* Add a new animal to the zoo */ void add_animal(Animal* animal); /* Remove an animal from the zoo */ Animal* remove_animal(size_t i); /* Return the number of animals in the zoo */ size_t get_num_animals() const; /* Return a pointer to the ith animal */ Animal* get_animal(size_t i) const; }; #endif /* EXAMPLE_H */