2017-08-05 49 views
-1

創建結構的數組我有我的代碼如下結構:的Arduino在結構

struct digitalDataStruct { 
    unsigned long timestamp; 
    int digitalData; 
}; 

struct analogDataStruct { 
    unsigned long timestamp; 
    int analogData[16]; 
}; 

struct structWithPositionAndCo { 
    const int sizeOfDigital = 1000; 
    const int sizeOfAnalog = 10; 
    digitalDataStruct sensorValuesDigital[]; 
    analogDataStruct sensorValuesAnalog[]; 
    int digitalPosition = 0; 
    int analogPosition = 0; 
    int lastDigitalWriteToPC = 0; 
    int lastAnalogWriteToPC = 0; 
}; 

現在我想創建digitalDataStruct和analogDataStruct的陣列。

structPackage.sensorValuesAnalog = new analogDataStruct[structPackage.sizeOfAnalog]; // array to store the value coming from the sensor 
structPackage.sensorValuesDigital = new digitalDataStruct[structPackage.sizeOfDigital]; // array to store the value coming from the sensor 

但我仍然得到這個錯誤:

incompatible types in assignment of 'analogDataStruct*' to 'analogDataStruct [0]' 

任何線索?

+0

什麼是'structPackage'? –

+0

structPackage是structWithPositionAndCo的對象 –

回答

1

您可以使digitalDataStruct和analogDataStruct成員指向這些相應類型而不是數組。您還需要一個成員變量,以便每個成員變量都可以跟蹤每個項目的數量,如果它不是您可以編碼的已知值。

struct structWithPositionAndCo { 
const int sizeOfDigital = 1000; 
const int sizeOfAnalog = 10; 
digitalDataStruct* sensorValuesDigital; 
analogDataStruct* sensorValuesAnalog; 
int digitalPosition = 0; 
int analogPosition = 0; 
int lastDigitalWriteToPC = 0; 
int lastAnalogWriteToPC = 0; 

};

+0

您對「每個...的成員變量」的確切含義是不是那個sizeOfDigital和sizeOfAnalog? –

+0

是的。但是我不知道該數字是否從結構的一個實例改變爲另一個實例,因爲您沒有發佈任何代碼。如果它是已知的值,那麼你不需要一個成員來保存它。如果它對於所有實例都不相同,那麼每個實例都需要知道它有多少個實例。 –

+0

是的,價值不會改變,我把它放在結構中,使其明確安排。我也只有這個結構的一個實例 現在它的指針工作,但我的編譯器不再說有多少SRAM的空間被使用... –