|
Boost Users : |
From: Meryl Silverburgh (silverburgh.meryl_at_[hidden])
Date: 2006-02-15 12:19:45
Thanks. But I have the following compiler error. Thanks for any idea to fix it.
code:
#include "boost/lambda/bind.hpp"
#include "boost/lambda/lambda.hpp"
using namespace std;
using namespace boost::lambda;
transform(inputs.begin(), inputs.end(), bdl.begin(), _1 =
bind(new_ptr<Rect>()));
../TestBlockData.cpp: In member function 'void
TestBlockData::buildBlockDataList(std::vector<std::string,
std::allocator<std::string> >&, BlockDataList&)':
../TestBlockData.cpp:119: error: '_1' was not declared in this scope
../TestBlockData.cpp:119: error: 'new_ptr' was not declared in this scope
../TestBlockData.cpp:119: error: expected primary-expression before '>' token
../TestBlockData.cpp:119: error: expected primary-expression before ')' token
On 2/14/06, Peter Dimov <pdimov_at_[hidden]> wrote:
> Meryl Silverburgh wrote:
> > How can I use boost:bind library to bind to constructor of a class.
> >
> > Right now, I have code like this:
> > class build
> > {
> > public:
> >
> > Rect* operator()(string& str)
> > {
> > return new Rect(str);
> > }
> >
> > };
> >
> > void TestBlockData::buildRectList( vector<string>& inputs, RectList&
> > bdl) {
> >
> > transform(inputs.begin(), inputs.end(), bdl.begin(), build());
> > }
> >
> > I wonder if I can get rid of the whole "build class" by using
> > boost::bind library.
>
> No, you can't; boost::bind can only adapt existing function objects into new
> function objects, but as a general rule it can't create function objects
> from scratch. The Lambda library has new_ptr<Rect>() that may work for you,
> though:
>
> http://www.boost.org/doc/html/lambda/le_in_details.html#lambda.construction_and_destruction
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net