如何在cython中的cpp类中声明枚举

时间:2016-07-16 17:29:56

标签: c++ enums cython

我正在尝试使用cython包装c ++库。 c ++头文件说MyFile.h声明了这样一个类:

class MyClass {

public:
    enum MyEnum{
        TYPE0 = 0,
        TYPE1 = 1,
        TYPE2 = 2,   
    };

    MyClass(MyEnum val=TYPE0){
        // ...
    }
    // ...
}

pxd文件包含:

cdef extern from "<MyFile.h>":

    cdef cppclass MyClass:

        cdef enum MyEnum:
            TYPE0 = 0
            TYPE1 = 1
            TYPE2 = 2

        MyClass(MyEnum val=TYPE0) except +

但是cython没有编译它。我该怎么做呢?

1 个答案:

答案 0 :(得分:4)

尝试使用命名空间:

cdef extern from "MyFile.h" namespace "MyClass":
    cdef enum MyEnum:
        TYPE0 = 0
        TYPE1 = 1
        TYPE2 = 2

或许这也可行:

cdef extern from "MyFile.h":
    cdef enum MyEnum "MyClass::MyEnum":
        TYPE0 = 0
        ...