Существует ли шаблон проектирования для класса, использующего другой экземпляр того же класса? - PullRequest
0 голосов
/ 11 октября 2019

Учитывая следующий псевдокод, который я пытаюсь написать:

#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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...