Pybind11:绑定匿名枚举

时间:2021-07-14 17:33:56

标签: c++ struct enums pybind11

我有以下结构:

struct DataStruct {
  enum { ID = importantData };
  int data1;
  int data2;
}

我将如何绑定匿名枚举?我在下面有我当前的绑定,但到目前为止我只是跳过枚举。

py::class_<DataStruct>(m, "DataStruct")
  .def(py::init<>())
  .def_readwrite("data1", &DataStruct::data1)
  .def_readwrite("data2", &DataStruct::data2);

请注意,此结构将用作也通过 pybind11 绑定到 python 的函数的输入,因此目标更重要的是能够在 Python 中创建对象,然后将其传递给绑定在 python 中的 C++ 函数,而不是就是严格读取struct的内容。

1 个答案:

答案 0 :(得分:0)

根据 docs,将其定义为:

py::class_<DataStruct> data_struct(m, "DataStruct");

data_struct.def(py::init<>())
    .def_readwrite("data1", &DataStruct::data1)
    .def_readwrite("data2", &DataStruct::data2);

py::enum_<DataStruct::DataStructEnum>(data_struct, "DataStructEnum")
    .value("ID", DataStruct::DataStructEnum::ID)
    .export_values();