Boost logo

Boost Users :

Subject: Re: [Boost-users] boost::bind issues
From: Antony Polukhin (antoshkka_at_[hidden])
Date: 2013-04-23 04:04:49


2013/4/21 Littlefield, Tyler <tyler_at_[hidden]>:
> Hello all:
> I'm having some issues with boost::bind. I'm using it as normal, but I'm
> still getting a ton of errors:
> In file included from staticObject.h:7:0,
> from staticObject.cpp:6:
> olc.h: In instantiation of ‘class
> OlcEntry<boost::function<std::basic_string<char>()__attribute__((const))>,
> boost::function<void(const std::basic_string<char>&)> >’:
> staticObject.cpp:160:60: required from here
> olc.h:43:5: error: ‘OlcEntry<G, S>::_getter’ has incomplete type
> here's what the specific lines on staticObject.cpp looks like:
> sgroup->AddEntry(new OlcStringEntry("name", "Sets the name of the object",
> OF_NORMAL,
> boost::bind(&StaticObject::GetName, _1),
> boost::bind(&StaticObject::SetName, _1, _2)));
> and here's the incomplete type deal.
> typedef boost::function<std::string () const> StringGetter;
> typedef boost::function<void (const std::string&)> StringSetter;
> template <class G, class S>
> class OlcEntry:public IOlcEntry
> {
> protected:
> G _getter;
> S _setter;
> public:
> OlcEntry(const std::string &name, const std::string &help, FLAG flag, const
> G& getter, const S& setter)
> :IOlcEntry(name, help, flag)
> {
> _setter = setter;
> _getter = getter;
> }
> ...
> };
>
> Any ideas/help would be awesome.
> Thanks,

StringSetter type accept 1 argument, however boost::bind(&StaticObject::Set
Name, _1, _2) produces a functor that accepts two arguments.

Same thing with StringGetter.

You need to provide correct pointer to bind instead of _1 so that your
example could work:

sgroup->AddEntry(new OlcStringEntry("name", "Sets the name of the
object", OF_NORMAL);
sgroup->Last()->_setter = boost::bind(&StaticObject::SetName,
sgroup->Last(), _1);
sgroup->Last()->_getter = boost::bind(&StaticObject::GetName, sgroup->Last());

--
Best regards,
Antony Polukhin

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