Pybind11:如何为将结构作为参数的函数创建绑定?

Pybind11: How to create bindings for a function that takes in a struct as an argument?

请参阅下面的 C++ 代码,我正在尝试为

创建 python 绑定
struct Config {
  int a;
  int b;
};

void myfunction(const Config &config);

这是我目前的情况,

PYBIND11_MODULE(example, m) {
  py::class_<Config>(m, "Config")
    .def_readwrite("a", &Config::a)
    .def_readwrite("b", &Config::b);

  m.def("myfunction", &myfunction);
}

这可以编译,但是当我尝试调用 python 中的 python 绑定时,

import example

config = example.Config;
config.a = 1;
config.b = 2;

example.myfunction(config)

我收到以下错误

TypeError: myfunction(): incompatible function arguments. The following argument types are supported:
    1. (arg0: example.Config) -> None

Invoked with: <class 'example.Config'>

谁能告诉我为接受结构作为参数的函数创建 python 绑定的正确方法是什么?

正如@eyllanesc 所暗示的,问题将通过添加默认构造函数来解决:

PYBIND11_MODULE(example, m) {
  py::class_<Config>(m, "Config")
    .def(py::init<>())
    .def_readwrite("a", &Config::a)
    .def_readwrite("b", &Config::b);

  m.def("myfunction", &myfunction);
}
import example

config = example.Config();
config.a = 1;
config.b = 2;

example.myfunction(config)