У меня есть объект C++ и я хочу передать его по ссылке/указателю на встроенный интерпретатор Python, чтобы Python мог вносить в него изменения, которые видны для обоих C++ и Python. Я использую Boost.Python для взаимодействия.Передайте объект C++ по ссылке/указателю на интерпретатор Python с использованием Boost.Python
Ради примера, вот это класс Foo
, его Boost.Python обертка и Foo
объект в C++:
mymodule.h:
struct Foo
{
int bar;
Foo(int num): bar(num) {}
};
mymodule.cpp :
#include "mymodule.h"
#include <boost/python.hpp>
BOOST_PYTHON_MODULE(mymodule)
{
using namespace boost::python;
class_<Foo>("Foo", init<int>())
.def_readwrite("bar", &Foo::bar)
;
}
main.cpp:
#include <iostream>
#include <boost/python.hpp>
#include "mymodule.h"
using namespace boost::python;
int main()
{
Py_Initialize();
object main_module = import("__main__");
object main_namespace = main_module.attr("__dict__");
import("mymodule");
Foo foo(42);
// ... somehow use Boost.Python to send reference to interpreter ...
object result = exec_file("myscript.py", main_namespace);
std::cout << foo.bar << std::endl;
}
Так как же я отправить ссылку на foo
на Python, так как C++ и Python может видеть его содержимое?