通过引用传递的数组在 C++ 中不会更新

问题描述 投票:0回答:1

我正在尝试将数组传递给 C++ 类,以便使对数组对象的更改在类外部可见。但它不起作用。每次调用后,对

Motor
对象的更改都会丢失。

这是一个使用 ESPAsyncWebServer 的 Arduino 项目。不确定这是否重要。

请参阅 github 上的项目以获取完整源代码。

setup()
方法中,我定义数组并将其传递到网络服务器中:

void setup()
{
    std::array<Motor, NOF_MOTORS> motorArray = {
        Motor(1, 0, 1, DEFAULT_PWM),
        Motor(2, 2, 3, DEFAULT_PWM)};

    server.addHandler(new RequestHander(motorArray));
}

RequestHandler
构造函数通过引用获取数组:

class RequestHander : public AsyncWebHandler
{
    public:
        RequestHander(std::array<Motor, NOF_MOTORS> &motorArray) : motorArray_(motorArray) {}
    private:
        std::array<Motor, NOF_MOTORS> motorArray_;
}

你知道为什么 Motor 对象没有改变吗?对我来说,感觉好像它们是按价值传递的。

c++ arrays pass-by-reference
1个回答
-1
投票

您永远不会更新传递给构造函数的数组。

© www.soinside.com 2019 - 2024. All rights reserved.