2017-08-05 72 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的空间被使用... –