SWIG C++ to Python: Warning(362): operator= ignored
SWIG C++ to Python: Warning(362): operator= ignored
我正在向Python导出一个c++类,我注意到在编译过程中,SWIG发出以下警告:
Warning(362): operator= ignored
我不确定为什么操作符被重载,因为它在SWIG文档中说,SWIG能够处理操作符,如赋值操作符
我的类没有什么特别的,它是这样声明的:
class Foo
{
public:
Foo();
Foo& operator= (const Foo&);
// etc ..
};
为什么SWIG无法为赋值操作符生成包装代码,我该如何解决这个问题?
python中没有赋值(除了基本类型),只有指针赋值。如果你想创建一个副本,你需要一个特殊的复制函数
阅读文档的最后一行链接(第31.3.11节):
另外,要注意某些操作符不能干净地映射到Python。例如,重载赋值操作符不映射到Python语义,将被忽略。
相关文章:
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 过载'operator new'如何导致无限循环?
- 为什么我会" void value not ignored as it ought to be"?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 处理"no operator found"
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 运算符重载:"operator+"必须采用零个或一个参数
- 使用 operator() 扩展 Eigen::EigenBase
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 有没有办法修改'operator->',以便'z->im'返回复数的虚部
- "operator +="行为异常的定义
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- 为什么编译器说"candidate template ignored: couldn't infer template argument 'InputIterator'"?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- 为什么 operator() 处的指针成员不起作用?
- 为什么 string_view::operator== 按值接受参数
- SWIG C++ to Python: Warning(362): operator= ignored