pybind11 - Обтекание перегруженного оператора присваивания? - PullRequest
0 голосов
/ 18 марта 2020

Я использую pybind11 для предоставления функций C ++ интерфейсу Python. Я хочу обернуть перегруженный оператор присваивания, но не знаю как. Предоставленная документация и примеры на самом деле не охватывают это, по крайней мере из того, что я видел.

Вот упрощенная версия того, что я пытаюсь сделать:

class Num{
  public:
    Num(const double& num) : m_val(num), m_type(Num::Type::e_none){}

    Num& operator=(const double& rhs){m_val = rhs;}

  private:
    double m_val;
};

А вот обертывание:

PYBIND11_MODULE(demo, m){
    py::class_<Num>(m, "Num")
        .def(py::init<const double&>())
        // Overloaded assignment operator binding ?
        ;
}

Моя главная задача - сохранить тип данных Num при назначении его типу с плавающей точкой. Например:

>>> m = Num(4.5)
>>> type(m)
<class 'demo.Num'>
>>> m = 5.5
>>> type(m)
<class 'float'>

Я впервые работаю с расширениями и привязками C ++, поэтому любое понимание того, что я должен делать, было бы здорово!

...