我正在尝试多线程化我的图像记录应用程序,以优化性能并防止GUI冻结。 我试图创建一个CaptureThread的向量(我的类扩展了QThread)但是它没有编译...
这是我的代码:
vector<CaptureThread> v_ct_Threads(i_SelectedCameras);
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());
v_ct_Threads[i].start();
}
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i].wait();
}
错误:
use of deleted function ‘CaptureThread& CaptureThread::operator=(CaptureThread&&)’
v_ct_Threads[i] = CaptureThread(i, qsb_Duration->value());
我猜这是一个愚蠢的错误,但我是C ++和Qt的初学者......
答案 0 :(得分:3)
CaptureThread的复制构造函数已删除,可能是因为无法复制QThread。
您可以将CaptureThreads的指针输入到线程向量中。
vector<std::unique_ptr<CaptureThread>> v_ct_Threads(i_SelectedCameras);
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i] = std::make_unique<CaptureThread>(i, qsb_Duration->value());
v_ct_Threads[i]->start();
}
for(int i = 0; i < i_SelectedCameras; i++) {
v_ct_Threads[i]->wait();
}