【发布时间】:2019-09-12 14:41:02
【问题描述】:
我执行一段python代码生成C++对象并回调一个python函数,然后把这个对象返回给python,为什么对象被破坏了?
我使用boost python来包装我的C++程序并从python创建一个对话框。然后当点击一个按钮时,回调一个python函数,将这个对象指针返回到这个函数,但是对象成员数据似乎全部清除了
class MyObj
{
public:
OtherThing();
ConnectFunc(boost::python::object callbackfun){m_pyCallbackFunc=callbackfun;}
//some operation will call below function
DoSomething(){m_pyCallbackFunc(this)}
private:
boost::python::object m_pyCallbackfunc;
vector<int> m_vecData;
}
def callback(myobject):
#call my object functions again
myobject.Otherthing()
//first generate C++ object by python ,such as
obj=MyObj
obj.ConnectFunc(callback)....
一切顺利,但执行OtherThing()函数时,成员数据 m_vecData 已被清除。我发现当调用python函数“回调”时, MyObj会调用销毁函数,所以数据已经被清除了
任何人都可以帮助我如何避免它,我想保留它吗?或者有人给我个好主意
【问题讨论】: