Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QThreads的向量_C++_Qt_Qthread - Fatal编程技术网

C++ QThreads的向量

C++ QThreads的向量,c++,qt,qthread,C++,Qt,Qthread,为了优化性能和防止GUI冻结,我正在尝试对图像录制应用程序进行多线程处理。 我试图创建CaptUratRead的向量(我的类扩展了QThread),但它没有编译 这是我的密码: vector<CaptureThread> v_ct_Threads(i_SelectedCameras); for(int i = 0; i < i_SelectedCameras; i++) { v_ct_Threads[i] = CaptureThread(i, qsb_Duration

为了优化性能和防止GUI冻结,我正在尝试对图像录制应用程序进行多线程处理。 我试图创建CaptUratRead的向量(我的类扩展了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();
}

< P>我猜这是一个愚蠢的错误,但我是C++和QT初学者…

< P> CopTrItTrx的复制构造函数被删除,可能是因为不能复制Q线程。p> 您可以将CAPT的指针插入线程向量

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();
}
vector v_ct_线程(i_SelectedCameras);
对于(int i=0;ivalue());
v_ct_线程[i]->start();
}
对于(int i=0;iwait();
}

CAPTURAREAD的复制构造函数被删除,可能是因为无法复制QThread

您可以将CAPT的指针插入线程向量

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();
}
vector v_ct_线程(i_SelectedCameras);
对于(int i=0;ivalue());
v_ct_线程[i]->start();
}
对于(int i=0;iwait();
}

您不能复制线程。也许
emplace\u back
可以帮助您可能只需要一个QThreadPool。您不能复制线程。也许<代码> ePosithBuffe>代码可以帮助您只需要一个QuthCub。我更新到C++ 14,您的解决方案似乎起作用了。谢谢。@BlackSilver-55
std::make_unique
是c++14的一部分。有关它的更多信息,请参阅,如何解决c++11中缺少它的问题以及如何实现您自己的版本。在c++11中,您可以使用:
v_-ct_-Threads[i]=std::unique_-ptr(新的capturatRead(i,qsb_-Duration->value())我更新到C++ 14,你的解决方案似乎起作用了。谢谢。@BlackSilver-55
std::make_unique
是c++14的一部分。有关它的更多信息,请参阅,如何解决c++11中缺少它的问题以及如何实现您自己的版本。在c++11中,您可以使用:
v_-ct_-Threads[i]=std::unique_-ptr(新的capturatRead(i,qsb_-Duration->value())