Я ищу простой способ передать экземпляр класса C++ встроенному интерпретатору python.
Я хотел бы выставить мой экземпляр Foo из мира C++ в мир python (и видеть его как класс Foo).
Возможно ли это, если да, то как?
Я думаю, что это почти как в первом ответе : boost::python::ptr или использование PyInstance_New
Я полагаю, это означает, что я должен использовать boost.Python
для обертывания моей библиотеки?
Моя единственная цель - манипулировать моим C++ экземпляром Foo во встроенном интерпретаторе python (не уверен, что это можно сделать с помощью предыдущего метода).
Надеюсь, я понятно объяснил, спасибо за помощь.
update
Спасибо за ваши ответы. На самом деле, я уже открыл свой класс Foo для python (с помощью swig).
Что я имею:
мой класс Foo:
class Foo{...};
моя обернутая библиотека (включая класс Foo) открыта для python: так что я могу запустить интерпретатор python и сделать что-то вроде этого:
import my_module
foo=my_modulde.Foo()
Что я хочу:
иметь главную программу на C++, которая встраивает интерпретатор python и манипулирует переменными мира 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;
}
Теперь понятнее? :)