Cześć, mam problem z napisaniem klasy agregującej. Prawdopodobnie robię coś źle z wektorem, ale zupełnie nie mam pomysłu co. Problem jest z wyświetlaniem zawartości wektora w funkcji Act(). Jeśli zawartość tej funkcji wrzucę do funkcji InitZoo() to wszystko poprawnie działa, więc prawdopodobnie źle zapisuję dane do wektora Animals. Z góry dziękuję za pomoc
#pragma once
#include "vector"
#include "iostream"
#include <ctime>
#include <windows.h>
#include <conio.h>
using namespace std;
class TAnimal;
typedef std::vector<TAnimal*> AnimalVectType;
typedef enum { ctCalm = 1, ctUnrest } ConditionType;
//--------------------------------------------------------------------------------------
// TAnimal
//--------------------------------------------------------------------------------------
//klasa TZoo poprzez wektor animal agreguje dowolną liczbę obiektów TAnimal
class TZoo
{
public:
AnimalVectType Animals;
void Zoo();
void InitZoo();
void Act(ConditionType pCondition);
};
void TZoo::InitZoo()
{
TDog d1;
d1.set_name("Piesel");
TLion l1, l2;
l1.set_name("Lew");
l2.set_name("Lewel");
TSheep s1;
s1.set_name("Owcel");
Animals.push_back(&d1);
Animals.push_back(&l1);
Animals.push_back(&l2);
Animals.push_back(&s1);
}
void TZoo::Act(ConditionType pCondition)
{
if (pCondition == ctCalm)
{
for (auto it = Animals.begin(); it != Animals.end(); it++)
{
(*it)->MakeSound();
}
//cout << "hejka1";
}
else if (pCondition == ctUnrest)
{
//for (auto it = Animals.begin(); it != Animals.end(); it++)
//{
// (*it)->MakeSoundLoud();
//}
cout << "hejka2";
}
}