Учитывая следующий псевдокод, который я пытаюсь написать:
#define ANIMAL_NUMBER 10
#define MALE 1
#define FEMALE 0
class Zoo
{
public:
Animal* GetAnimal(int id) {return &animal[id];}
private:
Animal animal[ANIMAL_NUMBER];
};
class Animal
{
public:
Animal():sex_(rand()%2),speed_(rand()%100),life(100){}; //ctor
void Kill(Animal* animal)
{
animal->life_ = 0;
};
void KillSlowMaleAnimalsInZoo(void)
{
for(int id=0; id < ANIMAL_NUMBER; id++)
{
Animal* animal = Zoo::GetAnimal(id);
if((animal->GetLife() > 0) &&
(animal->GetSex() == MALE) &&
(animal->GetSpeed()<20))
{
Kill(animal);
}
};
int GetSex(void)
{
return sex_;
};
int GetLife(void)
{
return life_;
};
int GetSpeed(void)
{
return speed_;
};
private:
int sex_;
int speed_;
int life_;
};
Существует ли конкретный шаблон проектирования для решения этой конкретной проблемы?
Мне нужен доступ к другому классуЭкземпляр Animal в определении класса Animal.