嵌套的结构数组 - 如何正确地为结构成员赋值?

Nested array of structs - how do i properly assign a value to struct members?

我有

struct Voice {
  static byte mode;
  //Some other stuff
};

byte Voice::mode{};   //Static member defined outside of struct declaration

struct DataPacket {
    DataPacket() : sequencer{}, voice{}, tempdata{} {};
    
    Sequencer sequencer;
    Voice voice[4];
    Tempdata tempdata;
};

我想为数组中的 一个 语音结构成员分配一个变量值,如下所示:

DataPacket assignVoiceValues(const InputPacket &inputPacket,
                             DataPacket &dataPacket,
                             const byte &voiceNumber) {
  dataPacket.voice[voiceNumber].mode = (byte) inputPacket.finalPotvalue[0];

  //Other code
}

即使这样编译,当我测试代码时 all voice[] 数组中的四个结构成员 mode 同时分配了 inputPacket.finalPotvalue[0]。没有为 dataPacket.voice[voiceNumber].mode 赋值的代码可能会干扰其他地方。

我不知道为什么会这样。我缺少什么,让它按预期工作的正确语法是什么?

(我知道通常建议使用向量而不是数组,但代码适用于内存有限的 arduino 板)。

您已将模式定义为 static byte mode;...因此在整个程序中恰好为其中之一分配了 space。

也许 mode 不应标记为 static

由于您将变量“模式”声明为静态,因此它绑定到您的 class(单个),而不是您的 class 的实例(您可以创建很多实例)。

要解决此问题,只需从变量描述中删除 static

https://en.cppreference.com/w/cpp/language/static