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