pybind11 通过引用访问私有类成员

问题描述

我得到了一个带有私有变量 locked_ 的类。可以通过方法 bool& locked();bool locked() const;

访问此变量
class Test {
    
  bool& locked();
  bool locked() const;
    
 private:
  bool locked_{true};
};

我不允许更改类 Test,但我必须编写一个允许设置和检索 locked_ 的 pybind11 接口。

我不能使用 .def_readwrite("locked",&Test::locked_);,因为 locked_ 当然是私有的。 我尝试使用

.def("locked",static_cast<bool& (Test::*)()>(&Test::locked),"locked",py::return_value_policy::reference_internal);

编译不过只是返回一个 bool 而不是对 bool 的某种可修改的引用。

如何在不“触及”原始 C++ 实现的情况下使锁定的读/写可访问。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)