嵌套的结构数组 - 如何正确地为结构成员赋值?
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
我有
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