簡體   English   中英

pybind11 - 包裝重載賦值運算符?

[英]pybind11 - Wrapping overloaded assignment operator?

我正在使用 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++ 擴展和綁定,所以任何關於我應該做什么的見解都會很棒!

.def("assign", &Num::operator=);

更多詳情請參考https://github.com/pybind/pybind11/issues/250

我沒有足夠的聲譽來對 Voya 的回答添加評論,但是 plfoley 的回答中使用“py::overload_cast”的語法是不正確的。 它應該是.def("assign", py::overload_cast<const double&>(&Num::operator=));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM