[英]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=);
我沒有足夠的聲譽來對 Voya 的回答添加評論,但是 plfoley 的回答中使用“py::overload_cast”的語法是不正確的。 它應該是.def("assign", py::overload_cast<const double&>(&Num::operator=));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.