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
}