c++ - 使基类受保护成员成为pybind11中的只读参数
问题描述
给定以下代码结构,由 Parent-Child 类模板BaseParameter
和Parameter
. 我想在 Python 中将_value
成员设为BaseParameter
只读属性。
pybind 给出以下错误
.def_property_readonly("value", &Parameter<double>::value);
“不允许指向类型为“const double &”的成员的指针”。
有没有更干净的方法来做到这一点,而不是必须访问value
,因为我不能这样做,&Parameter<double>::_value
因为它无法访问。
注意:BaseParameter
由于其在 C++ 中的功能,该类必须保持原样(对我项目中的其他代码)
template<typename T>
class BaseParameter {
protected:
T _value;
public:
const T& value = _value;
};
template <typename T>
class Parameter;
// Specify a Parameter type
template<>
class Parameter<double> : public BaseParameter<double> {
public:
/* Code here */
};
// Expose Only Parameter (and its variants) to Python
class PyParameter : public Parameter<double> {
public:
/* Code here */
};
py::class_<Parameter<double>, PyParameter> PAR(m, "Parameter");
PAR
.def_property_readonly("value", &Parameter<double>::value);
解决方案
推荐阅读
- java - 如何替换 Spark 数据集中的空字节字符
使用 Java
- python - Pygame Sprite 组声明它没有精灵,但也显示它包含超过 1000 个
- javascript - 输入字段最大值验证服务器响应
- clojure - (funcall ...) 等价于 Clojure?
- python - 尝试将 CSS 选择器与 requests-HTML 一起使用时出错
- ios - Firebase subscribeToTopic 在 iOS 上不起作用
- mysql - 使用 group by 和多个“count”查询
- google-cloud-platform - GCP - 操作系统登录通过控制台 SSH 浏览器工作,但不能通过 Cloud Shell
- javascript - 按字母顺序对数组元素进行排序
- prolog - 未能获得所有解决方案 [findall + 最小解决方案]