blob: 504e8fcbe04b002c0254a87b7460a7c2f9ec6601 [file] [log] [blame]
#include "example.h"
Animal::Animal(const char* name) : name_(name)
{
}
Animal::~Animal()
{
name_ = "Destroyed";
}
/* Return the animal's name */
const char* Animal::get_name() const
{
return name_.c_str();
}
Zoo::Zoo()
{
}
Zoo::~Zoo()
{
return;
}
/* Create a new animal. */
Animal* Zoo::create_animal(const char* name)
{
return new Animal(name);
}
/* Add a new animal to the zoo. */
void Zoo::add_animal(Animal* animal)
{
animals.push_back(animal);
}
Animal* Zoo::remove_animal(size_t i)
{
/* Note a production implementation should check
for out of range errors. */
Animal* result = this->animals[i];
IterType iter = this->animals.begin();
std::advance(iter, i);
this->animals.erase(iter);
return result;
}
/* Return the number of animals in the zoo. */
size_t Zoo::get_num_animals() const
{
return animals.size();
}
/* Return a pointer to the ith animal */
Animal* Zoo::get_animal(size_t i) const
{
return animals[i];
}