[英]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
}
即使這樣編譯,當我測試代碼時, voice[]
數組中的所有四個結構成員mode
都同時分配了inputPacket.finalPotvalue[0]
。 沒有代碼可以在其他地方為dataPacket.voice[voiceNumber].mode
分配值,這可能會干擾。
我不知道為什么會這樣。 我錯過了什么,讓它按預期工作的正確語法是什么?
(我知道通常建議使用矢量而不是 arrays,但該代碼適用於內存有限的 arduino 板)。
您已將模式定義為static byte mode;
...因此在整個程序中為其中一個分配了空間。
也許mode
不應該標記為static
?
由於您聲明變量“模式” static 它綁定到您的 class (這是單一的),而不是您的 class 的實例(您可以創建很多實例)。
要解決此問題,只需從變量描述中刪除 static
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.