Array и var не имеют предопределенного содержимого

Я сделал Animation.cpp для моего светодиодного куба, содержащего двумерный массив uint16_t для каждого кадра и каждого слоя. Я инициализирую массив в .cpp, а также у меня есть переменная, содержащая количество кадров. Но когда он работает, массив, кажется, содержит только случайные данные (от оперативной памяти), и int w / количество кадров равно 0.

ссылка на cpp:
http://hastebin.com/kunemopece.avrasm

ссылка на заголовок:
http://hastebin.com/duvijipeya.vala

Я в значительной степени новичок в CPP / GCC, так что я сделал не так?

-1

Решение

В C ++ 11 вы можете сделать это напрямую:

class Animation
{
public:
std::uint16_t frames[8][4] = {
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
{0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}
};
std::uint8_t currentFrame = 0;
};

В C ++ 03 вы должны использовать конструктор:

class Animation
{
public:
Animation() : currentFrame(0)
{
for (int i = 0; i != 8; ++i) {
for (int j = 0; j != 4; ++j) {
frames[i][j] = 0xFFFF;
}
}
}

uint16_t frames[8][4];
uint8_t currentFrame;
};
1

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

Значение frames в вашем классе другой набор frames что вы определяете в Cpp.
Попробуйте инициализировать ваши кадры в Animation конструктор класса.

1

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