Berörda klasser: Application, Factory Konstig kod men just det här problemet är lätt.Vektorn är tom.
I Application:public:
vector<SoldierUnit*> GetSoldierUnits() { return soldierUnits; }
private:
vector<SoldierUnit*> soldierUnits;
I Factory:void Factory::AddUnitToApp(Application *app)
{
app->GetSoldierUnits().push_back(new Spy);
app->PrintSoldierUnitInfo();
}
Det verkar som att min vektor är tom hela tiden.
Varför?
Tacksam för svar.
Sv: Vektorn är tom.
Du returnerar en kopia av vektorn med GetSoldierUnits och du lägger till nya saker i kopian. Returnera vektorn som referens istället.
vector<SoldierUnit*>& GetSoldierUnits() { return soldierUnits; }
Eller gör helt enkelt soldierUnits public så behöver du inte gå omvägen via GetSoldierUnits().
(Eftersom GetSoldierUnits ändå ger full access till vektorn finns det ingen anledning att ha den privat)
Skulle dessutom rekommendera någon smartpekare i vektorn så du inte får minnesläckage och jag hoppas att SoldierUnit har en viritell destruktor.