Привязка функции с указанием ссылки с помощью nanobindPython

Программы на Python
Ответить
Anonymous
 Привязка функции с указанием ссылки с помощью nanobind

Сообщение Anonymous »

Какой синтаксис nanobind подходит для предоставления приведенного ниже метода экземпляра?

Код: Выделить всё

struct Foo {
int &value() & {
return v;
};
int v;
};
При использовании pybind можно использовать static_cast с синтаксисом Foo::* для приведения указателя функции к соответствующему типу, например:< /p>

Код: Выделить всё

nb::class_(m, "Foo").def("value", static_cast(&Foo::value));
но при использовании nanobind я получаю такую ​​ошибку:

Код: Выделить всё

...third_party/nanobind/include/nanobind/nb_class.h:567:28: error: no matching
function for call to 'cpp_function_def(int& (Foo::*)() &, nanobind::scope,
nanobind::name, nanobind::is_method)'
567 |         cpp_function_def((detail::forward_t) f, scope(*this),
|         ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
568 |                             name(name_), is_method(), extra...);
|                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Нужен ли мне какой-то класс-оболочка с методом без ссылки?

Подробнее здесь: https://stackoverflow.com/questions/792 ... h-nanobind
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»