我正在使用Boost.Python来包装C ++库。
如何确保始终为特定C ++实例(通过指针标识)返回相同的Python实例(通过对象标识)?我无法扩展C ++类,但如果有帮助,我可以添加一个成员变量(如PyObject *或boost :: python :: handle<>)。我想我应该能够在C ++实例中缓存Python实例,并返回缓存的实例,而不是创建一个新实例。但是,我无法弄清楚需要什么包装代码。
要包装的示例类:
class C {
public:
boost::python::handle<> wrapper_;
private:
C();
C(const C &);
~C();
};
有人可以提供建议吗?
答案 0 :(得分:1)
在对这个问题投入了一些时间之后,我得出的结论是它比它的价值更麻烦。我已经辞职了,id()将识别(可能是短命的)包装器对象,而不是实际的C ++对象。
相反,我以其他方式识别我的C ++对象,例如通过查看内容。