Это код, я использую:станд :: нить на функции OpenCV генерирует ошибку «Попытка использовать удаленную функцию»
cv::Mat mask, foreground;
std::thread t(cv::threshold, mask, foreground, 254, 255, cv::THRESH_BINARY);
t.join();
Компиляция с Xcode 8 с поддержкой C++ 11. Есть идеи?
Вот полное сообщение об ошибке:
In file included from /Users/mlitvin/xcode/Create/ImageProcUtils.cpp:13: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:347:5: error: attempt to use a deleted function __invoke(_VSTD::move(_VSTD::get(__t)), _VSTD::move(_VSTD::get(__t))...); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:357:5: note: in instantiation of function template specialization 'std::__1::__thread_execute' requested here __thread_execute(*__p, _Index()); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:369:42: note: in instantiation of function template specialization 'std::__1::__thread_proxy >' requested here int __ec = pthread_create(&__t_, 0, &__thread_proxy, __p.get()); ^ /Users/mlitvin/xcode/Create/ImageProcUtils.cpp:71:21: note: in instantiation of function template specialization 'std::__1::thread::thread' requested here std::thread t(cv::threshold, mask, foreground, 254, 255, cv::THRESH_BINARY); ^ In file included from :368: In file included from :3: In file included from /Users/mlitvin/xcode/Create/Create/Create_Prefix.h:25: In file included from /Users/mlitvin/xcode/Create/3rdParty/OpenCV-2.3.1/modules/imgproc/include/opencv2/imgproc/imgproc.hpp:50: In file included from /Users/mlitvin/xcode/Create/3rdParty/OpenCV-2.3.1/modules/core/include/opencv2/core/core.hpp:56: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:625: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:1087:5: note: '~__nat' has been explicitly marked deleted here ~__nat() = delete; ^ 1 error generated.
Edit 1:
Похоже, проблема с пропусканием объекта типа cv::OutputArray
в качестве аргумента.
Какое полное сообщение об ошибке? Он должен сказать вам, какая функция удалена. – NathanOliver
Я замечаю, что вы не передаете адрес-член функции-члена в поток ctor. Я ожидаю увидеть '& cv :: threshold'. Возможно, может случиться так, что сообщение об ошибке с удаленной функцией - это красная селедка, и у вас есть синтаксическая ошибка. – acraig5075
'threshold()' не является функцией-членом, он не находится внутри класса ('cv' - пространство имен opencv). Я пытался добавить '&' перед 'cv :: threshold', но такая же ошибка сохраняется. –