我正在将一个C ++类导出到Python,我注意到在编译期间,SWIG发出了以下警告:
Warning(362): operator= ignored
我不确定为什么运算符被重载,因为它在SWIG documentation中说,SWIG能够处理运算符,例如赋值运算符
我的班级没什么特别的,它是这样声明的:
class Foo
{
public:
Foo();
Foo& operator= (const Foo&);
// etc ..
};
为什么SWIG无法为赋值运算符生成包装器代码,我该如何解决?
答案 0 :(得分:9)
python中没有赋值(除了原始类型),只有指针赋值。如果要创建副本,则需要特殊的复制功能。
答案 1 :(得分:6)
阅读documentation链接的最后一行(第31.3.11节):
另外,请注意某些运算符不能完全映射到Python。例如,重载的赋值运算符不映射到Python语义,将被忽略。