Передача массива Python в вектор C ++ с использованием Swig - PullRequest
3 голосов
/ 15 декабря 2008

У меня есть массив объектов в Python

[obj1, obj2, obj3]

и я хочу передать их функции C ++ для выполнения некоторых вычислений. Я использую SWIG, чтобы написать свой интерфейс. Тип класса передаваемого объекта уже определен в C ++.

Какой лучший способ сделать это?

1 Ответ

2 голосов
/ 16 декабря 2008

Это зависит от того, написана ли уже ваша функция и не может быть изменена. В этом случае вам может понадобиться проверить документы Swig, чтобы увидеть, существует ли уже карта типов из PyList в std :: vector (я думаю, что она есть). Если нет, то взятие PyObject * в качестве аргумента функции и использование Python C API для управления списками должно работать нормально. У меня до сих пор не было проблем с этим. Для самостоятельного документирования я рекомендую typedef'у PyObject * для некоторого ожидаемого типа, такого как "PythonList", чтобы параметры имели некоторое значение.

Это также может быть полезно:

Как представить std :: vector в виде списка Python, используя SWIG?

...