我正在使用 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();
};
有人可以提供建议吗?
最佳答案
在对这个问题投入了一些时间之后,我得出的结论是它带来的麻烦多于它的值(value)。我已经放弃了 id() 将识别(可能是短暂的)包装器对象而不是实际的 C++ 对象。
相反,我以其他方式识别我的 C++ 对象,例如通过查看内容。
关于c++ - 如何确保始终为特定 C++ 实例返回相同的 Python 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182264/