Я не могу создать вектор Poco :: Threads - PullRequest
0 голосов
/ 04 июня 2018

Я создаю вектор потоков Poco следующим образом:

using Poco::Thread;
std::vector<Thread> threads;
Thread pt;
threads.push_back(pt);

и получаю следующую ошибку:

c: \ program files (x86) \ microsoft visualstudio 12.0 \ vc \ include \ xmemory0 (593): ошибка C2248: «Poco :: Thread :: Thread»: невозможно получить доступ к закрытому члену, объявленному в классе «Poco :: Thread»

Что такоепричина и какой контейнер следует использовать для хранения потоков?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Poco::Thread можно только перемещать, не копировать, и поэтому полагаться на наличие конструктора перемещения / оператора назначения перемещения.Вы используете древнюю версию Visual Studio, которая не поддерживает правильную семантику перемещения.

Вам необходимо обновить Visual Studio до версии, которая не старше 5 лет

0 голосов
/ 04 июня 2018
func(){ do something }

std::thread th1(func);
std::thread th2(func);

// Перемещение объектов потока в вектор

 vecOfThreads.push_back(std::move(th1));
    vecOfThreads.push_back(std::move(th2));

// Добавление объекта потока в вектор

vecOfThreads.push_back(std::thread(func));
...