SWIG Python包装,奇怪的除法运算符重载
当我包装一个特殊的数学运算时,我尝试在CTPS类中包装以下重载运算符:SWIG Python包装,奇怪的除法运算符重载,python,c++,overloading,swig,built-in,Python,C++,Overloading,Swig,Built In,当我包装一个特殊的数学运算时,我尝试在CTPS类中包装以下重载运算符: inline const CTPS operator+(const CTPS & M) const {return CTPS(*this)+=M;} inline const CTPS operator+(const double & a) const {return CTPS(*this)+=a;} inline const CTPS operator-(const CTPS & M) const
inline const CTPS operator+(const CTPS & M) const {return CTPS(*this)+=M;}
inline const CTPS operator+(const double & a) const {return CTPS(*this)+=a;}
inline const CTPS operator-(const CTPS & M) const {return CTPS(*this)-=M;}
inline const CTPS operator-(const double & a) const {return CTPS(*this)-=a;}
inline const CTPS operator-() const {return CTPS(*this)*=(-1);}
inline const CTPS operator+() const {return CTPS(*this);}
inline const CTPS operator/(const CTPS & M) const {return CTPS(*this)/=M;}
inline const CTPS operator/(const double & a) const {return CTPS(*this)/=a;}
inline const CTPS operator*(const CTPS & M) const {return CTPS(*this)*=M;}
inline const CTPS operator*(const double & a) const {return CTPS(*this)*=a;}
在SWIG中使用以下重命名规则:
%rename (__add__) operator+;
%rename (__sub__) operator-;
%rename (__div__) operator/;
%rename (__mul__) operator*;
%rename (__neg__) operator-();
%rename (__pos__) operator+();
我尝试了使用/不使用SWIG的内置选项。在python中,divide操作符不在内置模式下工作,但在没有此选项的情况下工作。谁能解释一下我做错了什么
非常感谢。您可能不使用重命名函数,而只使用新版本的swig,它可以支持相应的Python版本。我遇到了同样的问题,C++中的操作符/超载是用SWIG2.0包的,但是Python 3.7在C++中没有识别操作符/类。通过替换能够支持python3.7的swig版本,我的问题终于得到了解决