У меня есть 
ObjectsBuffer, который содержит 
std::vector<LevelObject> (objectsBuffer), а класс имеет функцию 
updateObject(int index, LevelObject &updatedObject)
 Исходный код функции:
void updateObject(int index, LevelObject &updatedObject) {
        this->getReferenceBuffer()[index] = updatedObject;
    }
getReferenceBuffer
std::vector<LevelObject> &getReferenceBuffer() {
        return this->objectsBuffer;
    }
Основной код:
LevelObject object = objectsBuffer.getWithIndex(selectedObjectIndex);
if(object.lobjecttype == LevelObjectType::RECTANGLE) {
    static char objectName[28];
    strcpy(objectName, object.lobjectname.c_str());
    static int objectWidth = object.objectWidth;
    static int objectHeight = object.objectHeight;
    static int objectX = object.objectX;
    static int objectY = object.objectY;
    ImGui::InputText("Object name.", objectName, IM_ARRAYSIZE(objectName));
    ImGui::InputInt("Object Width.", &objectWidth);
    ImGui::InputInt("Object Height.", &objectHeight);
    ImGui::InputInt("Object X.", &objectX);
    ImGui::InputInt("Object Y.", &objectY);
    if(ImGui::Button("Apply.")) {
        object.lobjectname = objectName;
        object.objectWidth = objectWidth;
        object.objectHeight = objectHeight;
        object.objectX = objectX;
        object.objectY = objectY;
        objectsBuffer.updateObject(selectedObjectIndex, object); // Сдесь пытаюсь обновить обьект.
    }
}
Из примера я получаю объект по индексу из вектора по индексу, изменяю его, а затем пытаюсь обновить объект. Все свойства, такие как objectWidth или другие, остаются прежними. Я не создаю буфер в цикле, я его нигде не перезаписываю (только обновляю его здесь и добавляю новые элементы). Как это исправить?