SWIG C++ to Python: предупреждение(362): оператор= игнорируется

я экспортирую класс C++ в Python, и я заметил, что во время компиляции SWIG выдал следующее предупреждение:

Warning(362): operator= ignored

Я не уверен, почему оператор перегружается, потому что говорится в документация SWIG, этот SWIG способен обрабатывать операторы, такие как оператор присваивания

в моем классе нет ничего особенного, он объявлен следующим образом:

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

почему SWIG не может генерировать код оболочки для оператор присваивания, и как я могу это исправить?

2 ответов


в python нет назначения (кроме примитивных типов), только назначение указателей. Если вы хотите создать копию, вам нужна специальная функция копирования.


прочитайте последнюю строку вашего документация ссылка (раздел 31.3.11):

кроме того, имейте в виду, что некоторые операторы не сопоставляются с Python. Например, перегруженные операторы присваивания не сопоставляются с семантикой Python и игнорируются.