2016-04-15 63 views
0

我想获得一个boost :: function到一个new_ptr(带参数),它可以存储在一个散列表中供以后使用。一种用于模块使用的构造函数的ID注册器。下面是简单的问题:从boost :: lambda ::获取boost :: function :: new_ptr绑定参数

#include <boost/lambda/bind.hpp> 
#include <boost/lambda/construct.hpp> 
#include <boost/function.hpp> 

using namespace boost::lambda; 

struct TestObject 
{ 
    TestObject(int p){} 
}; 

void doStuff() 
{ 
    boost::function<TestObject*(int)> tf1 = bind(new_ptr<TestObject>(), _1); 
} 

的结合作品本身,但对于提振语法::功能必须关闭,因为它给了我:

error C2664: 'TestObject::TestObject(int)' : cannot convert parameter 1 from 'boost::lambda::lambda_functor<T>' to 'int' BOOST\1.57.0\boost\lambda\construct.hpp 146 1 

我已经做过没有参数的构造函数(很好用)。我无法弄清楚缺少什么,或者如果我想做一些不可能的事情。

使用boost v1.57.0和msvc 2012(v110)进行编译。

+1

无法重播,您包含哪些文件?请提供[mcve]。 – Barry

+0

编辑,我的坏。 – jinc

+0

仍按我原样编译。 – Barry

回答

0

代码编译上standalone MSVC 2015

可以升级VS,重新配置的Visual Studio 2012至2015年的MSVC或封装在一个lib/DLL命令行编译你的函数。

+0

很高兴知道,我会牢记它。不幸的是,对我来说这不是一个直接的可能 – jinc

相关问题