У меня есть метод класса, который возвращает указатель на внутреннюю структуру данных (где структура данных гарантированно изживет свое использование в коде Python). Похоже:
class MyClass {
...
some_structure* get() {
return inner_structure_;
}
private:
some_structure* inner_structure_;
};
Я хочу обернуть этот get()
метод в Boost :: Python, чтобы, если два разных объекта этого класса возвращали один и тот же указатель, связанные some_structure
объекты в python сравнивались равными.
Внутри определения class_<MyClass>
я пытался обернуть get()
политиками вызовов return_value_policy<reference_existing_object>()
и return_inner_reference<>()
, но в обоих случаях вызов get()
для различных объектов Python "MyClass" возвращает разные some_structure
объекты, даже если все они указывают на один и тот же адрес памяти в C ++.
Как бы мне обойти это? Может ли быть скрытое свойство внутри объекта-обертки, в котором хранится адрес указателя, так что я могу вместо этого сравнить его?