On Sun, Apr 21, 2013 at 11:22 AM, Littlefield, Tyler <tyler@tysdomain.com> wrote:
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,

1) It's difficult to read your message when everything is single-spaced.
2) I think you'd get more help if you had a small, self-contained example exhibiting your problem.

- Jeff