我有以下结构:
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++ 函数,而不是严格阅读结构体的内容。
那又如何
py::enum_<decltype(DataStruct::ID)>(m, "DataStructEnum")
.value("ID", DataStruct::ID);
根据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();