Я следую некоторым урокам Бартоша Милевского здесь , которые я считаю очень полезными.Тем не менее, поскольку автор использует just :: thread реализацию стандарта потоков C ++ 11 (которого у меня еще нет), я решил пока использовать потоки повышения, как автораучебник говорит, что это тривиально, чтобы сделать это.Это похоже на первые три урока в серии, но я столкнулся с некоторыми проблемами с четвертым.Вот мой код:
#include <iostream>
#include <cassert>
#include <boost\thread.hpp>
#include <boost\thread\future.hpp>
void thFun(boost::promise<std::string> & prms)
{
std::string str("Hi from future!");
prms.set_value(str);
}
int main()
{
boost::promise<std::string> prms;
boost::unique_future<std::string> fut = prms.get_future();
boost::thread th(&thFun, std::move(prms)); // error C2248: 'boost::promise<R>::promise' : cannot access private member declared in class 'boost::promise<R>'
std::cout << "Hi from main!";
std::string str = fut.get();
std::cout << str << std::endl;
th.join();
return 0;
}
Следующая строка вызывает проблему, которую я не понимаю:
boost::thread th(&thFun, std::move(prms));
, когда компилятор жалуется:
ошибка C2248: «boost :: обещание :: обещание»: невозможно получить доступ к закрытому члену, объявленному в классе «boost :: обещание»
Кто-нибудь может подсказать, в чем может быть проблема?1018 * спасибо заранее!