【发布时间】:2010-07-05 21:29:48
【问题描述】:
我正在使用 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();
};
谁能提供建议?
【问题讨论】:
-
我尝试这样做,但遇到了 GC 的各种问题。我已经辞职了,id() 标识(临时创建的)包装对象,而不是 C++ 对象。我以其他方式识别我的 c++ 对象。
标签: c++ python boost boost-python