SWIG C ++ naar Python: Warning (362): operator = genegeerd

Ik exporteer een C ++ -klasse naar Python en ik heb gemerkt dat SWIG tijdens de compilatie de volgende waarschuwing heeft uitgegeven:

Warning(362): operator= ignored

Ik weet niet zeker waarom de operator wordt overbelast, omdat er staat in de SWIG-documentatie , dat SWIG in staat is om operators zoals de toewijzingsoperator af te handelen

Er is niets bijzonders aan mijn klas, het wordt als volgt verklaard:

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

Waarom maakt SWIG geen wrappercode voor de toewijzingsoperator en hoe kan ik dit oplossen?

9

2 antwoord

Er is geen toewijzing in python (anders dan in primitieve typen), alleen toewijzing van wijzers. Als u een kopie wilt maken, hebt u een speciale kopieerfunctie nodig.

8
toegevoegd

Lees de laatste regel van uw documentatie -link (sectie 31.3.11):

Houd er ook rekening mee dat bepaalde operators niet netjes worden toegewezen aan Python. Overbelaste toewijzingsoperators worden bijvoorbeeld niet gekoppeld aan Python-semantiek en worden genegeerd.

6
toegevoegd