void MainWindow::moveAgvs(int i),void AGVScheduler::assign_task_to_agv(std::vector<Task>& tasks, std::vector<AGV>& agvs),以下代碼報錯:void MainWindow::action_agv() { std::vector<std::thread> threads; threads.push_back(std::thread(&AGVScheduler::assign_task_to_agv, std::ref(tasks), std::ref(agvs))); // 分配小车 for (int i = 0; i < agvs.size(); i++) { threads.push_back(std::thread(&moveAgvs, i));// 更新 AGV } for (auto& t : threads) { t.join(); } }
时间: 2024-03-05 18:50:51 浏览: 71
Qt5主窗体程序:文本编辑器的实现(Qt5开发及实例)
这段代码报错的原因是在调用"std::thread"的构造函数时,传递给"AGVScheduler::assign_task_to_agv"函数的参数列表中多了一个右括号")"。您可以将代码修改为以下形式:
```c++
void MainWindow::action_agv() {
std::vector<std::thread> threads;
threads.push_back(std::thread(&AGVScheduler::assign_task_to_agv, std::ref(tasks), std::ref(agvs))); // 分配小车
for (int i = 0; i < agvs.size(); i++) {
threads.push_back(std::thread(&moveAgvs, i)); // 更新 AGV
}
for (auto& t : threads) {
t.join();
}
}
```
将多余的右括号")"删除即可。另外,您需要确保"tasks"和"agvs"向量在调用"action_agv"函数时已经被正确初始化,以避免其他潜在的运行时错误。
阅读全文