Я использую 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 ++, поэтому любое понимание того, что я должен делать, было бы здорово!