Я использую Boost.Python, чтобы обернуть библиотеку C ++.
Как мне обеспечить, чтобы один и тот же экземпляр Python (по идентификатору объекта) всегда возвращался для конкретного экземпляра C ++ (по идентификатору указателя)? Я не могу расширять классы C ++, но я могу добавить переменную-член (такую как PyObject * или boost :: python :: handle <>), если это поможет. Я думаю, что я должен быть в состоянии кэшировать экземпляр Python в экземпляре C ++ и возвращать кэшированный экземпляр вместо создания нового. Однако я не могу понять, какой код переноса необходим.
Пример класса для переноса:
class C {
public:
boost::python::handle<> wrapper_;
private:
C();
C(const C &);
~C();
};
Может кто-нибудь дать совет?