¿Cómo puedo implementar una clase de C ++ en Python, que será llamada por C ++?
Tengo una interfaz de clase escrita en C ++. Tengo algunas clases que implementan esta interfaz también escrita en C ++. Estos se llaman en el contexto de un programa C ++ más grande, que esencialmente implementa "main". Quiero poder escribir implementaciones de esta interfaz en Python y permitir que se usen en el contexto del programa C ++ más grande, como si acabaran de escribirse en C ++.
Se ha escrito mucho sobre la interfaz de Python y C ++, pero no puedo entender cómo hacer lo que quiero. Lo más cercano que puedo encontrar está aquí:http: //www.cs.brown.edu/~jwicks/boost/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_function, pero esto no está del todo bien.
ara ser más concretos, supongamos que tengo una interfaz C ++ existente definida como:
// myif.h
class myif {
public:
virtual float myfunc(float a);
};
Lo que quiero poder hacer es algo como:
// mycl.py
... some magic python stuff ...
class MyCl(myif):
def myfunc(a):
return a*2
Luego, de vuelta en mi código C ++, quiero poder decir algo como:
// mymain.cc
void main(...) {
... some magic c++ stuff ...
myif c = MyCl(); // get the python class
cout << c.myfunc(5) << endl; // should print 10
}
Espero que esto sea suficientemente claro;)