我正在关注 Bartosz Milewski 的一些教程,我觉得这些教程非常有用。然而,由于作者使用 C++11 线程标准的just::thread实现(我还没有),我决定现在使用 boost 线程,因为本教程的作者说它对这样做。本系列的前三个教程似乎就是这种情况,但我在第四个教程中遇到了一些问题。这是我的代码:
#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::promise::promise”:无法访问在“boost::promise”类中声明的私有成员
谁能提出问题可能是什么?
提前致谢!