¿Hay alguna biblioteca que me permita crear de manera fácil y conveniente devoluciones de llamada orientadas a objetos en C++?Devolución de llamada orientada a objetos para C++?
el lenguaje Eiffel, por ejemplo, tiene el concepto de "agentes" que más o menos trabajo como esto: será
class Foo{
public:
Bar* bar;
Foo(){
bar = new Bar();
bar->publisher.extend(agent say(?,"Hi from Foo!", ?));
bar->invokeCallback();
}
say(string strA, string strB, int number){
print(strA + " " + strB + " " + number.out);
}
}
class Bar{
public:
ActionSequence<string, int> publisher;
Bar(){}
invokeCallback(){
publisher.call("Hi from Bar!", 3);
}
}
de salida: Hola de Bar! 3 Hola de Foo!
Entonces, el agente permite encapsular una función miembro en un objeto, asignarla a algunos parámetros de llamada predefinidos (Hola desde Foo), especificar los parámetros abiertos (?) Y pasarla a algún otro objeto que pueda invocar eso mas tarde.
Dado que C++ no permite crear indicadores de función en funciones miembro no estáticas, no parece tan trivial implementar algo tan fácil de usar en C++. encontré algunos artículos con google en devoluciones de llamada orientadas a objetos en C++, sin embargo, en realidad estoy buscando algunos archivos de biblioteca o encabezado que simplemente puedo importar, lo que me permite usar una sintaxis similar elegante.
¿Alguien tiene algunos consejos para mí?
Gracias!
No estoy seguro de entender por completo tu sintaxis, pero 'boost :: bind' se puede usar para empaquetar funciones y funciones miembro con una interfaz adecuada en un objeto. http://www.boost.org/doc/libs/1_44_0/libs/bind/bind.html#with_member_pointers –
¡hey! sí, creo que eso es lo que estoy buscando. Desafortunadamente no puedo compilar impulso para el iPhone (desarrollo en el iPhone). He leído que esto también es posible de hacer con stl. ¿alguien puede explicar cómo? – Mat