Exponer una instancia de clase C ++ a un intérprete incrustado de Python
Estoy buscando una manera simple de exponer una instancia de clase C ++ a un intérprete incorporado en Python.
Tengo una biblioteca C ++. Esta biblioteca está envuelta (usando swig por el momento) y puedo usarla desde el intérprete de python Tengo un programa principal de C ++ que instancia una clase Foo de mi biblioteca e incrusta un intérprete de Pythone gustaría exponer mi instancia de Foo en el mundo C ++ al mundo de Python (y visto como una clase de Foo).
¿Es esto posible? De ser así, ¿cómo?
Creo que es casi como en la primera respuesta de:boost :: python :: ptr o PyInstance_New use
Supongo que esto significa que debería usarboost.Python
para envolver mi biblioteca?
Mi único objetivo es manipular mi instancia de C ++ de Foo en el intérprete de Python incorporado (no estoy seguro de que se pueda hacer con el método anterior).
Espero que esté claro, gracias por tu ayuda.
actualiza
Gracias por tus respuestas. De hecho, ya he expuesto mi clase de Foo a python (con swig).
Lo que tengo
my clase Foo:
class Foo{...};
my biblioteca envuelta (incluida la clase Foo) expuesta a python: para poder iniciar el intérprete de python y hacer algo como esto:
import my_module
foo=my_modulde.Foo()
Lo que quiero
Tener un programa principal de C ++ que incorpora un intérprete de Python y manipula las variables mundiales de C ++.
int main(int argc, char **argv)
{
Foo foo; // instanciates foo
Py_Initialize();
Py_Main(argc, argv); // starts the python interpreter
// and manipulates THE foo instance in it
Py_Finalize();
return 0;
}
Clearer ahora? :)