我目前正在使用pybind11将python嵌入到我的程序中。
我调用update()函数,其中我想在从某个类创建的所有对象(数百个对象)上运行python代码。问题是,我需要将指向调用python代码的对象(this
)的指针移交给python。
所以基本上我有一个这样的类(最小伪C ++代码):
class A
{
public:
A(Data* d)
{
dat = d;
createPyObject(passToPython);
}
void update()
{
launchPythonCode(passToPython);
}
Data* getData(){return dat;}
static void createPythonClassDef()
{
pybind11::class_<A>(module, "A")
.def("getData",&A::getData);
}
private:
void createPyObject(PyObject* p)
{
//HowTo?
}
Data* dat;
PyObject* passToPython;
};
我尝试了什么: 添加一个函数,返回指向类的指针,并创建一个Python localdictionary,其中包含一个指向该函数的函数getA()。因此每个Object都包含自己的localdictionary,getA()函数返回其指针。 这应该给Python提供了对象,但它不起作用。
我希望有人可以告诉我如何为此目的正确嵌入python。