【发布时间】:2011-08-31 07:49:25
【问题描述】:
我有一个 c++ 类,里面有一个枚举,我想用boost::python 来模仿它,这样我就可以在 python 中编写MyClass.value。 boost::python::class_ 没有 enum_ 方法,我正在寻找解决方法。
-
我第一次尝试使用像这样的 lambdas
MyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");这会导致编译器错误(在
get_signature中,对于add_property)。我知道我可以为每个值创建 getter 方法,但这对我来说似乎很尴尬(打字方面)。 -
使用
attr:auto classObj=class_<MyClass>("MyClass"); classObj.attr("value1")=(int)value1; classObj.attr("value2")=(int)value2;但它不能像
.def和其他返回实例引用的方法那样链接。
有没有更优雅的解决方案?
【问题讨论】:
-
在
MyClass之外,您需要引用MyClass::value1之类的枚举值,尽管我的元素无法使用 boost-python 的东西。 -
+1 麻烦您正确格式化。
标签: c++ enums static-members boost-python