Вызов в Python конструктора класса C++, экспортированного через SWIG с использованием карты типов (выход), создает недопPython

Программы на Python
Anonymous
Вызов в Python конструктора класса C++, экспортированного через SWIG с использованием карты типов (выход), создает недоп

Сообщение Anonymous »

Вот минимальный пример.
У меня есть следующий файл интерфейса SWIG (все в одном)
pyhello. я

Код: Выделить всё

%module pyhello

%{
#include 

// Inline definition of my C++ class
class MyInt
{
public:
MyInt(int n) : _n(n) {}

static MyInt* create(int n) { return new MyInt(n); }

int get() const { return _n; }

private:
int _n;
};
%}

%typemap(out) MyInt, MyInt&
{
std::cout  print(i1 + i2)
Traceback (most recent call last):
File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'int' and 'MyInt'
Мои вопросы:
  • Почему вызов конструктора MyInt создает недопустимый MyInt
    объект в Python (мы видим, что карта типов используется для получения
    целого числа, а затем целое число оборачивается в вымышленный объект MyInt
    python)? Есть ли ошибка в SWIG?
  • Есть ли способ создать карту типов (выходную) для MyInt, чтобы
    чтобы команда create возвращала собственные целые числа при наличии конструктор , который продолжает создавать прокси-объекты (как если бы не было
    mapmap)?
Спасибо за помощь!>

Подробнее здесь: https://stackoverflow.com/questions/790 ... sing-a-typ

Вернуться в «Python»