Это может звучать как очень простой вопрос, но я пытаюсь исправить простую ошибку уже более часа, и я не могу понять, что происходит.Почему логическое значение внутри структуры внутри вектора не обновляется?
У меня есть следующая структура декларации в моем файле заголовка:
struct StudentBody
{
string name;
Vec2 position;
bool disabled;
StudentBody(string name, Vec2 position) : name(name), position(position) {}
};
Эта структура заполняется в вектор типа:
std::vector<StudentBody> students_real;
Как это:
students_real =
{
StudentBody("student1",Vec2(DISPLAY_WIDTH - 50, LOWER_MARGIN + 100)),
StudentBody("student2",Vec2(DISPLAY_WIDTH - 100, LOWER_MARGIN + 100)),
StudentBody("student3",Vec2(DISPLAY_WIDTH - 150, LOWER_MARGIN + 100)),
StudentBody("student4",Vec2(DISPLAY_WIDTH - 200, LOWER_MARGIN + 100))
};
По умолчанию у всех учеников установлено значение «disabled» равным false.
Тогда у меня есть «обновление» метод, который получает срабатывает с частотой обновления экрана, и в рамках этого метода у меня есть следующий код:
for (auto it = students_real.begin(); it != students_real.end(); it++)
{
auto student_to_check = *it;
CCLOG("student %s disabled -> %i",student_to_check.name.c_str(),student_to_check.disabled);
if (student_to_check.name == "student1" || student_to_check.disabled) {
continue;
}
bool disableStudent = true;
//... A custom condition here checks if "disabledStudent" should become false or stay as true...
if (disableStudent)
{
CCLOG("Disabling %s",student_to_check.name.c_str());
student_to_check.disabled = true;
CCLOG("student %s disabled -> %i",student_to_check.name.c_str(),student_to_check.disabled);
}
}
Проблема здесь является то, что «отключен» флаг не оставаясь как истинное. Когда я сначала проверяю условие, оно ложно. Затем я также проверяю свое второе условие и, если оно выполняется, я устанавливаю его в true. Однако при следующем запуске этого цикла цикл условие возвращается к false.
Это заставляет меня поверить, что мой "auto student_to_check = *it;"
дает мне копию структуры для обработки, но не сама структура? Или что происходит? Почему я не могу изменить значение структуры внутри вектора?
'авто student_to_check = * = Оно деталь A.'> 'Авто & student_to_check = * – user657267
нужно Оно деталь A.' быть 'Авто & student_to_check = * это,' – sp2danny
Ваш конструктор 'StudentBody' не гарантирует, что«по умолчанию все студенты имеют их «отключено» установлено на false « –