2016-04-15 62 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

相關問題