Функция класса не сохраняет значения членов

По какой-то причине функция не сохраняет значения элементов для массива объектов, кроме первого. Я сжал код, чтобы подчеркнуть природу этой проблемы.

classFile.cpp

myClass objectArray[10];

void myClass::Set(float x, int elementID)
{
myX = x;
log<< myX; //output is equal to x
log<< elementID; //output ranges from 0-9
log<< objectArray[elementID].myX; //output is incorrect if elementID is higher than 0
}

classFile.h

extern myClass objectArray[10];

callingFunctionFile.cpp

for(int i=0; i<10;i++)
{
objectArray[i].Set(5.0f, i);
i++;
}

Неправильный вывод objectArray[elementID].myX всегда то же самое для конкретного elementID но отличается от других elementIDs. Иногда это 0, иногда что-то вроде 8231924021

Редактировать:
Вот оригинальный код с соответствующими частями, написанными вверху (в случае, если вы заметили некоторые нюансы, потому что это слишком долго, чтобы фактически пройти через это): classFile.h, classFile.cpp, functionCallingFile.cpp

Edit2:
Похоже, что положение членов класса смещается в памяти на 3 байта на каждый объект, и это делает невозможным их чтение, кроме первого. Вот сравнение myX адреса и objectArray[i].myX адреса — pastebinLink

Я мог бы просто противостоять этому сдвигу в 3 байта вручную, но это все равно, что разбрызгивать дезодорант в грязный, а не промывать его.

Edit3:
То, что решило проблему, изменило положение #include "classFile.h" внутри файла callFunctionFile.cpp. После размещения в верхней части, как первый включить проблема исчезла

-3

Решение

Вы увеличиваете i дважды в цикле, заставляя пропустить все остальные элементы в массиве.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]