¿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;)

Respuestas a la pregunta(12)

Su respuesta a la pregunta