-1

我为我的 LED 立方体制作了一个 Animation.cpp,其中包含每个帧和每一层的 uint16_t 二维数组。我在 .cpp 中初始化了数组,并且还有一个包含帧数量的 var。但是当它运行时,数组似乎只有随机数据(来自 ram),并且 int w/帧数为 0。

链接到 cpp: http ://hastebin.com/kunemopece.avrasm

标题链接:http: //hastebin.com/duvijipeya.vala

我几乎是 CPP/GCC 的初学者,那么,我做错了什么?

4

2 回答 2

1

您的类中的定义与您在 cpp 中定义的frames不同集。frames尝试在Animation类构造函数中初始化框架。

于 2014-04-25T08:31:29.140 回答
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;
};
于 2014-04-25T08:47:16.483 回答