Как передать строку документа в pybind11::def_property_readonly?

#pybind11

Вопрос:

Я пытаюсь добавить документированное свойство только для чтения в класс в расширении python, определенном с помощью pybind11. Обычно это делается путем добавления строкового аргумента в вызов define. Однако, когда я добавляю строковый аргумент в вызов определения свойства только для чтения, я получаю ошибки компиляции шаблона.

Компилируется, но не имеет строки документа:

 [...]
.def_property_readonly(
        "property_name",
        [](){ return ""; })
[...]
 

Имеет строку документа, но не компилируется:

 [...]
.def_property_readonly(
        "property_name",
        [](){ return ""; },
        std::string("docstring"))
[...]
 

Ответ №1:

Вы должны пройти а const char * вместо а std::string .

 [...]
.def_property_readonly(
        "property_name",
        [](){ return ""; },
        "const char docstring")
[...]