3

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

任何人都可以提供建议吗?

4

1 回答 1

1

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

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

于 2010-07-12T07:52:14.267 回答