c++ boost boost-bind boost-function

c++ - Cómo usar Boost bind con una función miembro



boost-bind boost-function (1)

Use lo siguiente en su lugar:

boost::function<void (int)> f2( boost::bind( &myclass::fun2, this, _1 ) );

Esto reenvía el primer parámetro que se pasa al objeto de función a la función que utiliza marcadores de posición: debe decirle a Boost.Bind cómo manejar los parámetros. Con su expresión, intentaría interpretarla como una función miembro sin argumentos.
Ver, por ejemplo, here o here para ver los patrones de uso común.

Tenga en cuenta que VC8s cl.exe se bloquea regularmente en Boost.Bind usos indebidos : si tiene dudas, utilice un caso de prueba con gcc y probablemente obtendrá buenos consejos como los parámetros de la plantilla Bind -internals se crearon instancias si lee a través de la salida.

El siguiente código hace que cl.exe se bloquee (MS VS2005).
Estoy tratando de usar boost bind para crear una función a las llamadas a un método de myclass:

#include "stdafx.h" #include <boost/function.hpp> #include <boost/bind.hpp> #include <functional> class myclass { public: void fun1() { printf("fun1()/n"); } void fun2(int i) { printf("fun2(%d)/n", i); } void testit() { boost::function<void ()> f1( boost::bind( &myclass::fun1, this ) ); boost::function<void (int)> f2( boost::bind( &myclass::fun2, this ) ); //fails f1(); f2(111); } }; int main(int argc, char* argv[]) { myclass mc; mc.testit(); return 0; }

¿Qué estoy haciendo mal?