if (agvs[i].battery_ < 100) { auto i_copy = std::move(agvs[i]); std::thread charge_thread([this, i_copy]() { agv_charge(i_copy); // 在线程结束时运行moveAgvs(i) moveAgvs(i_copy); }); charge_thread.detach(); },報錯:agv_charge無法從引數1轉化爲int
时间: 2024-02-14 20:06:29 浏览: 78
AGVS.rar_AGVS调度_gulf5j4_scheduling AGV_wpf agv调度系统_调度控制
5星 · 资源好评率100%
如果 `agv_charge` 函数需要一个 `int` 类型的参数,那么在 lambda 表达式中调用它时,也需要传递一个 `int` 类型的参数。
例如,如果 `agv_charge` 函数需要一个 `int` 类型的参数 `n`,可以将代码修改为:
```
if (agvs[i].battery_ < 100) {
auto i_copy = std::move(agvs[i]);
std::thread charge_thread([this, i_copy, i]() { // 传递 i 参数
agv_charge(i_copy);
// 在线程结束时运行moveAgvs(i)
moveAgvs(i);
});
charge_thread.detach();
}
```
这里在 lambda 表达式中传递了 `i` 参数,保证了在新线程中可以访问到正确的变量。
阅读全文