SWIG 文档展示了如何重载运算符。他们的例子是一个复杂的类,他们展示了如何重载operator+。他们还有一个关于混合双重和复杂的例子。但是,给出的示例虽然定义了
Complex operator+(double, const Complex &)
,但仅适用于 complex+double。举个例子:
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 在右侧时可以工作的代码?