【问题标题】:How to initialize an array of objects from an array?如何从数组初始化对象数组?
【发布时间】:2019-05-14 11:56:00
【问题描述】:

我有一个常量字节数组。从该数组中,我想初始化一个对象数组。我尝试了以下代码,但没有产生预期的结果。

const byte VALUES [] = {1, 2, 3};

class MyClass {
    public:
        MyClass(byte value) {
            _value = value;
        }
    private:
        byte _value;
};

MyClass myObjects[] = {VALUES};

我通过使用以下代码设法做到了:

const byte VALUES [] = {1, 2, 3};

class MyClass {
    public:
        MyClass() {}
        MyClass(byte value) {
            _value = value;
        }
    private:
        byte _value;
};

MyClass *myObjects = new MyClass[3];

for (byte i = 0; i < 3; i++) {
    myObjects[i] = MyClass(VALUES[i]);
}

有没有更优雅的初始化对象数组的方法?最好没有循环和空构造函数。

【问题讨论】:

  • MyClass myObjects[] = {VALUES[0], VALUES[1], VALUES[2]};
  • VALUES 有更多元素时不会那么漂亮吧?

标签: c++ arrays arduino


【解决方案1】:

您可以使用 std::array 来做到这一点。这里不需要手动阵列管理。

std::array<MyClass, 3> ma = {1, 2, 3};

【讨论】:

  • 您没有使用常量字节数组,这在 Arduino 中不起作用。
猜你喜欢
  • 2020-04-21
  • 2016-03-11
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
相关资源
最近更新 更多