У меня есть unordered_map, который я использую для хранения некоторых объектов. Время от времени мне нужно обновлять переменные-члены некоторых объектов на карте. Но почему-то объект на карте не обновляется, не могу понять почему.
У меня есть структура:
typedef struct {
unsigned int JobId : 2;
bool isActive;
}JobEvent;
У меня есть класс:
class Job{
bool isActive;
void receiveEvent(JobEvent jobEvent);
}
void receiveEvent(JobEvent jobEvent){
isActive = jobEvent.isActive;
}
У меня есть другой класс:
class MyClass {
std::unordered_map<int,Job> jobMap;
void receiveJobEvents(const std::vector<JobEvent>jobEvents);
}
void receiveJobEvents(const std::vector<JobEvent>jobEvents){
int ctr = jobEvents.size();
for (int i=0; i<ctr; i++){
JobEvent jobEvent = jobEvents[i];
Job job = jobMap[jobEvent.jobId];
job.receiveEvent(jobEvent);
JobEvent jobEvent2 = jobMap[jobEvent.jobId];
}
}
Проблема в том, что значение isActive
в Job
, хранящееся в unordered_map
, не меняется? Когда я прохожу через отладчик, я вижу, что значение isActive
в job
изменяется. Но когда я получаю jobEvent2
из jobMap
(по тому же индексу, откуда я получил работу), значение является исходным значением.
Почему unordered_map возвращает копию? Разве он не должен возвращать ссылку? Почему я не могу обновить значение в unordered_map? Что я делаю не так ? Как исправить?