Buonasera.
Ho un array bidimensionale classico di oggetti "Casella". Ogni oggetto contiene una sua lista dinamica di Oggetti "Animale".
Quando aggiungo un "Animale" con .push_back() la lista rimane vuota.
Ho prodotto un codice di esempio:
////////////////////////////FILE.h
#include <array>
#include <vector>
class Animale
{
int varS;
public:
Animale(int s);
~Animale();
};
class Casella{
std::vector<Animale> AnimaliVivi;
public:
int QuantiAnim();
void AddAnimale(Animale a);
Casella();
~Casella();
};
class Mondo
{
static std::array<std::array<Casella, 60>, 60> Mondo::MaMa;
public:
Mondo();
static Casella Mondo::GetCasella(int x, int y);
~Mondo();
};
////////////////////////////FILE.cpp
#include "Cond.h"
Animale::Animale(int s)
{
varS = s;
}
Animale::~Animale()
{
}
Casella::Casella()
{
}
Casella::~Casella()
{
}
Mondo::Mondo()
{
}
Mondo::~Mondo()
{
}
std::array<std::array<Casella, 60>, 60> Mondo::MaMa;
Casella Mondo::GetCasella(int x, int y) { return MaMa[x][y]; }
void Casella::AddAnimale(Animale a) { AnimaliVivi.push_back(a); }
int Casella::QuantiAnim() { return AnimaliVivi.size(); }
////////////////////////////MAIN.cpp
private: System::Void load(System::Object^ sender, System::EventArgs^ e) {
Animale cavia(3);
Casella();
Mondo();
Mondo::GetCasella(0, 0).AddAnimale(cavia);
Mondo::GetCasella(0, 0).AddAnimale(cavia);
label1->Text = Convert::ToString(Mondo::GetCasella(0, 0).QuantiAnim());
}
Dove sbaglio?
Sarà che quando alloca la memoria per le "Casella" non ne riserva per la lista di "Animali" essendo in quel momento vuota?
Grazie!