Как определить python pybind11 привязок "operator ()" метод класса C ++? - PullRequest
2 голосов
/ 13 марта 2020

Допустим, у меня есть простой класс C ++

class MyClass{
     //constructor
     MyClass(int value):_value(value){};

     void operator()(AnotherClass& const b){
     // Do something with b object
     }

    private:
      int _value;
}

Я пытаюсь создать Python привязку этого класса с помощью pybind11. Как я могу связать метод operator()?

Эта привязка будет использоваться для передачи объектов этого класса в функции, требующие функции обратного вызова в качестве аргумента.

1 Ответ

2 голосов
/ 16 марта 2020

Я понял это, попробовав разные вещи. Нам нужно определить метод __call__ в нашей привязке. Как пример:

.def("__call__", [](MyClass& this, AnotherClass& const b){
                   return this(b);
                 }
    )
...