相关疑难解决方法(0)

801
推荐指数
5
解决办法
49万
查看次数

类范围的枚举

我有一个带有枚举的c ++类,我想模仿它boost::python,以便我可以用MyClass.valuepython 编写.boost::python::class_没有enum_方法,我正在寻找解决方法.

  1. 我第一次尝试使用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方法,但这对我来说似乎很尴尬(打字方式).

  2. 使用attr:

    auto classObj=class_<MyClass>("MyClass");
    classObj.attr("value1")=(int)value1;
    classObj.attr("value2")=(int)value2;
    
    Run Code Online (Sandbox Code Playgroud)

    但它不能像.def其他方法一样链接返回对实例的引用.

有更优雅的解决方案吗?

c++ enums static-members boost-python

15
推荐指数
1
解决办法
3806
查看次数

标签 统计

c++ ×2

boost-python ×1

enums ×1

static-members ×1

struct ×1

typedef ×1