如何确保始终为特定C ++实例返回相同的Python实例?

时间:2010-07-05 21:29:49

标签: c++ python boost boost-python

我正在使用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();
};

有人可以提供建议吗?

1 个答案:

答案 0 :(得分:1)

在对这个问题投入了一些时间之后,我得出的结论是它比它的价值更麻烦。我已经辞职了,id()将识别(可能是短命的)包装器对象,而不是实际的C ++对象。

相反,我以其他方式识别我的C ++对象,例如通过查看内容。