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

C++ 嵌套结构数组-如何正确地为结构成员赋值?,c++,arrays,struct,variable-assignment,C++,Arrays,Struct,Variable Assignment,我有 及 我想给数组中的一个语音结构成员分配一个变量值,如下所示: struct DataPacket { DataPacket() : sequencer{}, voice{}, tempdata{} {}; Sequencer sequencer; Voice voice[4]; Tempdata tempdata; }; 即使这样编译,当我测试代码时,voice[]数组中的四个结构成员mode中的所有都同时分配了inputpack.finalPo

我有

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

struct DataPacket {
    DataPacket() : sequencer{}, voice{}, tempdata{} {};
    
    Sequencer sequencer;
    Voice voice[4];
    Tempdata tempdata;
};
即使这样编译,当我测试代码时,
voice[]
数组中的四个结构成员
mode
中的所有都同时分配了
inputpack.finalPotvalue[0]
。没有为数据包.voice[voiceNumber].mode分配值的代码,这可能会造成干扰

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


(我知道向量通常推荐使用阵列,但代码适用于内存有限的arduino板)。

您将模式定义为
静态字节模式。。。所以在整个程序中,只为其中一个分配了空间


也许
模式
不应该标记为
静态

因为您声明变量“mode”static,它绑定到您的类(单个),而不是类的实例(您可以创建许多实例)

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


请提供一个理想的不需要水平滚动的页面,因为您将成员设置为静态。为什么要将其设置为静态?另一方面,通过常量引用传递
字节(或任何其他基元类型)是一种悲观的做法。按价值传递它们。
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
}