2011-11-12 9 views
9

を無視し、私は、PythonにC++クラスを輸出していると私はコンパイル時に、SWIGは、次の警告発行したことに気づいた:私はなぜわからないSWIG C++:(362)警告:演算子は=

Warning(362): operator= ignored 

をオペレータは、それがSWIG documentationに言うので、そのSWIGは私のクラスについての特別なものは何もありません、このような代入演算子

などの演算子を処理することが可能である、オーバーロードされている、それはこのように宣言されています

class Foo 
{ 
public: 
    Foo(); 
    Foo& operator= (const Foo&); 
    // etc .. 
}; 

SWIGが代入演算子のラッパーコードを生成できないのはなぜですか?これをどのように修正できますか?

答えて

8

Pythonでは(プリミティブ型以外の)代入はありません。ポインタの代入のみです。コピーを作成するには、特別なコピー機能が必要です。

6

あなたdocumentationリンク(セクション31.3.11)の最後の行読む:また

を、特定の事業者は、Pythonにきれいにマッピングしないことに注意してください。たとえば、オーバーロードされた代入演算子はPythonのセマンティクスにはマッピングされず、無視されます。