SWIG文档显示了如何重载运算符。他们的示例是Complex类,它们显示了如何重载operator +。他们也有一个例子谈论混合双和复合。然而,尽管它定义了给出的例子
Complex operator+(double, const Complex &)
,它仅适用于复数+双精度。
请看以下示例:
a = Complex(2,3);
b = a+3;
print(b);
b = 3+a;
print(b);
输出如下:
<Complex userdata: 7FFE30C47438>
Could not execute script file test.lua: Error in Complex::__add__ (arg 1), expected 'Complex *' got 'number'
第一行输出是第一次调用print(b)
的结果。对3+a
的调用失败。
如何让SWIG生成的代码在左侧是标量并且Complex位于右侧时会起作用?