Pybind11:绑定匿名枚举

问题描述 投票:0回答:2

我有以下结构:

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++ 函数,而不是严格阅读结构体的内容。

c++ struct enums pybind11
2个回答
0
投票

那又如何

py::enum_<decltype(DataStruct::ID)>(m, "DataStructEnum")
    .value("ID", DataStruct::ID);

-1
投票

根据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();
© www.soinside.com 2019 - 2024. All rights reserved.