簡體   English   中英

嵌套的結構數組 - 我如何正確地為結構成員賦值?

[英]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

https://en.cppreference.com/w/cpp/language/static

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM