2011-11-12 7 views
9

ja eksportowania klasa C++ do Python i zauważyłem, że podczas kompilacji, SWIG wydał następujące ostrzeżenie:SWIG C++ do Python: Ostrzeżenie (362): operator = ignorowane

Warning(362): operator= ignored 

Nie jestem pewien, dlaczego operator jest przeciążony, ponieważ mówi w SWIG documentation, że SWIG jest zdolny do obsługi operatorów takich jak operatora przypisania

Nie ma nic szczególnego w mojej klasie, to jest zadeklarowana następująco:

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

Dlaczego program SWIG nie generuje kodu opakowania dla operatora przypisania i jak mogę to naprawić?

Odpowiedz

8

Nie ma przypisania w pythonie (innego niż w typach pierwotnych), tylko przypisanie wskaźników. Jeśli chcesz utworzyć kopię, potrzebujesz specjalnej funkcji kopiowania.

6

Czytaj ostatnią linię linku documentation (rozdział 31.3.11):

Należy również pamiętać, że niektórzy operatorzy nie mapować CZYSTO Pythonie. Na przykład przeciążeni operatorzy przypisania nie mapują do semantyki Python i będą ignorowani.