0

我想要做的是 --> 在新线程中创建一个新对象。就像是:

Class* object = 0;
Arg arg;
boost::thread t( lambda::bind( object = lambda::new_ptr< Class >()( boost::ref( arg ) );

它不编译,什么是正确的方法?

4

1 回答 1

0

感谢 ildjarn,我尝试使用 boost::phoenix 并让它工作,代码是:

Class* object = 0;
CArg arg0;
Arg arg1;

boost::thread t( boost::phoenix::val( boost::ref( object ) ) = boost::phoenix::new_< Class >( boost::cref( arg0 ), boost::ref( arg1 ) );

同样,来自 ildjarn,更好的代码是:

类*对象 = 0;

CArg arg0;

精氨酸 arg1;

命名空间 phx = boost::phoenix;

boost::thread t( phx::ref( object ) = phx::new_< 类 >( phx::cref( arg0 ), phx::ref( arg1 ) );

于 2013-02-20T00:29:57.477 回答