【发布时间】:2021-07-15 08:13:50
【问题描述】:
我有
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
}
即使这样编译,当我测试代码时,voice[] 数组中的四个结构成员 mode 的代码全部同时分配有 inputPacket.finalPotvalue[0]。没有代码可以将值分配给其他可能干扰的dataPacket.voice[voiceNumber].mode。
我不知道为什么会这样。我错过了什么,让它按预期工作的正确语法是什么?
(我知道通常建议使用向量而不是数组,但该代码适用于内存有限的 arduino 板)。
【问题讨论】:
-
请提供minimal reproducible example,最好不要水平滚动。
-
发生这种情况是因为您将成员设为静态。你为什么把它变成静态的?
-
附带说明,通过 const 引用传递
byte(或任何其他原始类型)是一种悲观。按值传递它们。
标签: c++ arrays struct variable-assignment