Из вашего вопроса немного неясно, хотите ли вы использовать std::vector
или массив ваших собственных типов.
Для std::vector
, для некоторых C ++, например:
#include <vector>
#include <string>
struct foo {
std::string name;
};
inline std::vector<foo> test() {
std::vector<foo> ret;
foo instance;
instance.name = "one";
ret.push_back(instance);
instance.name = "two";
ret.push_back(instance);
return ret;
}
Вы можете обернуть его в %template
, pyabc.i
и std_vector.i
, например:
%module test
%{
#include "test.h"
%}
%include "pyabc.i"
%include "std_vector.i"
%include "test.h"
%template (FooVector) std::vector<foo>;
, который будет вести себя интуитивно на типе Python.Вам нужно будет вызвать SWIG с чем-то вроде:
swig -python -c++ -py3 -extranative test.i
Если идея заключается в том, чтобы обернуть «пользовательский» контейнер для интуитивного поведения на стороне Python, я привел подробный пример впредыдущий ответ.