传递一个二维数组并存储为 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