gpt4 book ai didi

python - SWIG Python包装,除法运算符重载很奇怪

转载 作者:行者123 更新时间:2023-12-01 15:02:56 25 4
gpt4 key购买 nike

当包装特殊的数学运算时,我尝试在类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 {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的带/不带-builtin选项。在python中,除法运算符在内置模式下不起作用,但是在没有此选项的情况下起作用。谁能解释我在这方面做错了什么?

非常感谢。

最佳答案

您可能不使用重命名功能,而只是使用新版本的swig,它可以支持相应的Python版本。我遇到了一个同样的问题,即swig2.0包装了C++中类的运算符/重载,但是python3.7没有识别出C++中类的运算符/。通过替换可以支持python3.7的swig版本,我的问题终于解决了。

关于python - SWIG Python包装,除法运算符重载很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com