传递一个二维数组并存储为 class 成员
Pass a bidimensional array and store as a class menber
我有一个带有二维整数数组的 C++ class。
该成员由class中的一种方法设置。
class MyClass {
private:
int values[][4];
public:
MyClass();
void setValues(int values[][4]);
如果我这样做:
MyClass::setValues(int values[][4]) {
Serial.println(values[0][0]);
}
一切正常,没有错误。但如果我这样做:
MyClass::setValues(int values[][4]) {
this->values = values;
}
我收到 invalid use of array with unspecified bounds
错误。
我需要这个二维空间来使用这个 class 的其他方法。
如何将其保存为 class 会员?
我用 ArduinoIDE 库中的 Vector.h 解决了这个问题。
但是,我不使用向量的向量...
首先,我创建了一个struct
struct MyStruct {
int a;
int b;
int c;
unsigned long d;
MyStruct(int a, int b, int c, unsigned long d) {
this->a = a;
this->b = b;
this->c = c;
this->d = d;
}
};
然后,将我的方法更改为 void set(Vector<MyStruct> steps);
并这样调用:
MyStruct steps[6] = {MyStruct(50, 0, 0, 100),
MyStruct(20, 0, 0, 100),
MyStruct(50, 0, 0, 100),
MyStruct(20, 0, 0, 100),
MyStruct(50, 0, 0, 100),
MyStruct(0, 0, 0, 500)
};
Vector<MyStruct> vector(steps, 6);
myClass.setSteps(vector);
现在可以使用了:D
我有一个带有二维整数数组的 C++ class。
该成员由class中的一种方法设置。
class MyClass {
private:
int values[][4];
public:
MyClass();
void setValues(int values[][4]);
如果我这样做:
MyClass::setValues(int values[][4]) {
Serial.println(values[0][0]);
}
一切正常,没有错误。但如果我这样做:
MyClass::setValues(int values[][4]) {
this->values = values;
}
我收到 invalid use of array with unspecified bounds
错误。
我需要这个二维空间来使用这个 class 的其他方法。
如何将其保存为 class 会员?
我用 ArduinoIDE 库中的 Vector.h 解决了这个问题。
但是,我不使用向量的向量...
首先,我创建了一个struct
struct MyStruct {
int a;
int b;
int c;
unsigned long d;
MyStruct(int a, int b, int c, unsigned long d) {
this->a = a;
this->b = b;
this->c = c;
this->d = d;
}
};
然后,将我的方法更改为 void set(Vector<MyStruct> steps);
并这样调用:
MyStruct steps[6] = {MyStruct(50, 0, 0, 100),
MyStruct(20, 0, 0, 100),
MyStruct(50, 0, 0, 100),
MyStruct(20, 0, 0, 100),
MyStruct(50, 0, 0, 100),
MyStruct(0, 0, 0, 500)
};
Vector<MyStruct> vector(steps, 6);
myClass.setSteps(vector);
现在可以使用了:D