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 конструктор класса.

Другие вопросы по тегам