Если у меня есть такая функция c ++ ...
int myfunc(int a, std::vector<float> *b);
И у меня есть это в моем .i файле ...
%apply std::vector<float>* OUTPUT {std::vector<float>*};
Тогда в Python я могу сделать это ...
_,bout = mylib.myfunc(1)
и bout
будет списком с плавающей точкой, как я хочу .... ууууу!
Но теперь я хочу сделать это на c ++ ...
int myfunc(int a, std::vector<MyObj> *b);
Простое выполнение следующих действий НЕ работает ...
%apply std::vector<MyObj>* OUTPUT {std::vector<MyObj>*};
Это дает ошибочный тип или число аргументов в Python. Я нашел менее чем идеальный способ заставить его работать, добавив это в мой файл .i ...
%include "std_vector.i"
namespace std {
%template(vectormyobj) vector<MyObj>;
}
Тогда в Python я могу сделать это ...
bout = mylib.vectormyobj()
_ = mylib.myfunc(1,bout)
В этом случае bout
- это список моих пользовательских типов, и все отлично работает .... ИСКЛЮЧИТЬ Я действительно хочу получить bout
в левой части = вместо того, чтобыпередать это в качестве аргумента. Кажется, мне нужен Swig-fu% typemap (in) и / или% typemap (argout), чтобы заставить его работать, но я не смог обернуть его вокруг себя.
Может кто-нибудь дать руководство?