我有一个包含枚举的C++类,我想使用boost::python
来模拟它,这样我就可以在Python中编写MyClass.value
。但是boost::python::class_
没有enum_
方法,我正在寻找解决方法。
我首先尝试使用lambda函数,例如
MyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");
在
add_property
的get_signature
中出现了编译错误。我知道我可以为每个值创建getter方法,但这样做对我来说似乎非常笨拙(从打字的角度考虑)。使用
attr
:
auto classObj=class_<MyClass>("MyClass");
classObj.attr("value1")=(int)value1;
classObj.attr("value2")=(int)value2;
但是它不能像.def
和其他返回实例引用的方法那样被链接。
有没有更优雅的解决方案?
MyClass
之外,您需要像MyClass::value1
这样引用枚举值,尽管我对 boost-python 的东西不太熟悉。 - Tom Kerr