asignando std :: function a una función miembro

class A { public: std::function f_; void print_num(int i) { cout << i; } void setFuntion(std::function f) { f_=f; } void run() { setFunction(print_num); } }; 

esto no funciona Obtengo una note: no known conversion for argument 1 from '' to 'std::function' y otros errores.

Si pongo la definición de print_num fuera de la clase. Todo funciona. Intenté agregar &A:: , A:: y this. nada ayudó

print_num es una función miembro no estática, lo que significa que tiene un primer argumento implícito de tipo A* . Puedes, por ejemplo, pasar eso usando un lambda:

 void run() { auto myself = this; setFunction( [myself] (int i) { myself->print_num (i); } ); } 

o usar bind , ver aquí

C ++ Función sobrecargada de resolución de problemas: