在C++中,之间有什么区别:
struct Foo { ... };
Run Code Online (Sandbox Code Playgroud)
和
typedef struct { ... } Foo;
Run Code Online (Sandbox Code Playgroud) 我有一个带有枚举的c ++类,我想模仿它boost::python,以便我可以用MyClass.valuepython 编写.boost::python::class_没有enum_方法,我正在寻找解决方法.
我第一次尝试使用lambdas
MyClass{
enum{value1,value2};
};
class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");
Run Code Online (Sandbox Code Playgroud)
这给出了编译器错误(in get_signaturefor add_property).我知道我可以为每个值创建getter方法,但这对我来说似乎很尴尬(打字方式).
使用attr:
auto classObj=class_<MyClass>("MyClass");
classObj.attr("value1")=(int)value1;
classObj.attr("value2")=(int)value2;
Run Code Online (Sandbox Code Playgroud)
但它不能像.def其他方法一样链接返回对实例的引用.
有更优雅的解决方案吗?