我正在尝试将数组传递给 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 对象没有改变吗?对我来说,感觉好像它们是按价值传递的。
您永远不会更新传递给构造函数的数组。