boost::bind - złe parametry?

0
bool IOMapSerialize::saveMapBinary(Map*)
{
    Scheduler::getInstance().addEvent(createSchedulerTask(100, boost::bind(saveMapBinaryEx, 0, 300)));
    //saveMapBinaryEx(map, 0, 300);
    //saveMapBinaryEx(map, 301, 600);

    return true;

}
bool IOMapSerialize::saveMapBinaryEx(Map*, uint32_t part, uint32_t stop)
{

to fragment mojego kodu.
i błąd przy kompilacji:

In member function 'bool IOMapSerialize::saveMapBinary(Map*)':
error: argument of type 'bool (IOMapSerialize::)(Map*, uint32_t, uint32_t)' does not match 'bool (IOMapSerialize::*)(Map*, uint32_t, uint32_t)'
In file included from /usr/include/boost/bind.hpp:22,
                 from otpch.h:35,
                 from iomapserialize.cpp:17:
/usr/include/boost/bind/bind.hpp: In instantiation of 'boost::_bi::result_traits<boost::_bi::unspecified, bool (IOMapSerialize::*)(Map*, uint32_t, uint32_t)>':
/usr/include/boost/bind/bind_template.hpp:15:   instantiated from 'boost::_bi::bind_t<boost::_bi::unspecified, bool (IOMapSerialize::*)(Map*, uint32_t, uint32_t), boost::_bi::list2<boost::_bi::value<int>, boost::_bi::value<int> > >'
/usr/include/boost/bind/bind.hpp:1480:   instantiated from 'boost::_bi::bind_t<boost::_bi::unspecified, F, typename boost::_bi::list_av_2<A1, A2>::type> boost::bind(F, A1, A2) [with F = bool (IOMapSerialize::*)(Map*, uint32_t, uint32_t), A1 = int, A2 = int]'
iomapserialize.cpp:453:   instantiated from here
/usr/include/boost/bind/bind.hpp:69: error: 'bool (IOMapSerialize::*)(Map*, uint32_t, uint32_t)' is not a class, struct, or union type

To moje pierwsze starcie z biblioteką boost::bind, niestety przykre. Z dokumentacji niewiele się dowiedziałem.
Proszę o wyrozumiałość i wskazanie błędu.

0

1' w C++ stosunkowo od niedawna nalezy pobierac adresy metod poprzez &. nazwa metody juz nie jest rownoznaczna ze wskaznikiem na nią. stąd:
boost::bind(saveMapBinaryEx, ...
powinno brzmiec:
boost::bind(&saveMapBinaryEx, ...
i stąd właśnie błąd pierwszy, zwróć uwagę na:
"error: argument of type 'bool (IOMapSerialize::)(Map, uint32_t, uint32_t)' does not match 'bool (IOMapSerialize::)(Map*, uint32_t, uint32_t)'"

2' saveMapBinaryEx jest trójargumentowe. Bind wywolujesz z dwoma - 0,300. Metoda saveMapBinary ma nienazwany parametr pierwszy. On w żaden sposob magicznie nie przeniesie sie do bind-saveMapBinaryEx!

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0