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: