Array и var не имеют предопределенного содержимого
Я сделал Animation.cpp для моего светодиодного куба, содержащего двумерный массив uint16_t для каждого кадра и каждого слоя. Я инициализирую массив в.cpp, а также у меня есть переменная, содержащая количество кадров. Но когда он работает, массив, кажется, содержит только случайные данные (от оперативной памяти), и int w/ количество кадров равно 0.
ссылка на cpp: http://hastebin.com/kunemopece.avrasm
ссылка на шапку: http://hastebin.com/duvijipeya.vala
Я новичок в CPP/GCC, так что я сделал не так?
2 ответа
Решение
В 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;
};
Значение frames
в вашем классе другой набор frames
что вы определяете в Cpp. Попробуйте инициализировать ваши кадры в Animation
конструктор класса.