Как разыменовать ссылку на swig float в python? - PullRequest
0 голосов
/ 21 января 2012

Я использую C ++ и Swig, чтобы сделать некоторые вычисления. Для упрощения предположим, что это выглядит так:

struct TestIt{
  TestIt(float x):x(x){};
  inline float& getIt() {return x;};
  float x;
};

Теперь я хочу использовать функцию getIt() и распечатать значение с плавающей запятой.

С

testee = matching.TestIt(42)
print(testee.getIt())

Я получаю

<Swig Object of type 'float *' at 0x1cb1690>

, что имеет смысл, потому что getIt возвращает ссылку. Как я могу разыменовать его / получить плавающий Python из него (без изменения кода C ++)?

1 Ответ

1 голос
/ 21 января 2012

Посмотрите здесь и здесь . Вы бы написали что-то вроде этого в своем модуле SWIG:

%pointer_class(float, floatp)

Это позволит вам сделать это в вашем коде Python:

print(testee.getIt().value())

Вам нужно будет изменить свой SWIG-модуль или написать его, если вы напрямую подключаете заголовочный файл C ++. Но вы, вероятно, можете просто включить заголовок C ++ оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...