Я новичок в C++, и я пытаюсь сделать небольшую игру. У меня есть этот класс с именем «UnitController», который хранит несколько экземпляров класса «Единица» на карте. Класс также имеет метод «getUnit», который должен возвращать один из сохраненных единиц.Получить экземпляр объекта с карты
Кажется, что этот метод работает только частично. Я думаю, что я получаю копию блока вместо запрашиваемого экземпляра.
Может ли кто-нибудь указать мне в правильном направлении?
#include "UnitController.h"
#include "Unit.h"
using namespace ci;
using std::map;
UnitController::UnitController()
{
}
void UnitController::addUnit(Vec2f position)
{
Unit mUnit = Unit();
mUnit.setup(position);
Units.insert(std::pair<int,Unit>(Units.size()+1, mUnit));
}
Unit UnitController::getUnit(int k)
{
Unit selectedUnit = Units[0];
return selectedUnit;
}
void UnitController::update()
{
for(map<int,Unit>::iterator u = Units.begin(); u != Units.end(); ++u){
u->second.update();
}
}
void UnitController::draw()
{
for(map<int,Unit>::iterator u = Units.begin(); u != Units.end(); ++u){
u->second.draw();
}
}
Что делать, если к> = Units.size()? :-) – user1764961
@ user1764961, его 'map', а не' vector' или 'array'. – hmjd
точно. Я не думаю, что OP будет доволен этим поведением. – user1764961