Сделайте это следующим образом:
Ваш файл интерфейса swig:
%include <typemaps.i>
%apply double& INOUT { double& a };
void set(double& a);
Использование в скрипте Python:
a = 0.0
a = set(a)
print a
Если ваша функция возвращает что-то (вместобудучи пустым), сделайте следующее в python
ret, a = set(a)
Изучите документацию по типам в swig.Вы можете сделать INPUT, OUTPUT & INOUT для аргументов.HTH
Обратите внимание, что это решение основано на предоставляемых SWIG картах типов OUTPUT , определенных в typemaps.i
library , которые предварительно определяют карты типов , используемые командой %apply
выше.
typemaps.i
определяет карты типов ввода / вывода для примитивных типов C ++ (дополнительную информацию см. В приведенной выше ссылке на документацию SWIG);однако вы должны включить библиотеку typemaps.i в свой интерфейсный файл, чтобы SWIG использовал их.(Следовательно, почему некоторые комментаторы, вероятно, обнаружили, что оригинальное решение не работает для них.)