У меня есть следующий код C ++:
struct MyType { int x, y; };
struct A {
std::vector<MyType> get_data();
};
, который я хочу связать с Python с помощью Boost Python, чтобы его можно было использовать следующим образом:
a = A()
ret = a.get_data();
for r in ret:
print('x=%d; y=%d;' % (r['x'], r['y']))
ЧтоУ меня сейчас довольно наивный:
BOOST_PYTHON_MODULE(pyA) {
class_<A>("A").def("get_data", &A::get_data);
}
, который дает мне, как и ожидалось, следующую ошибку
TypeError: No to_python (by-value) converter found for C++ type
, когда я пытаюсь вызвать функцию get_data()
из кода Python,
Я видел здесь сообщения (такие как std :: vector to boost :: python :: list ), которые описывают, как использовать vector_indexing_suite
для преобразования std::vector<T>
вlist
для некоторых типов T
(например, числа с плавающей запятой, строки), но я не уверен, как расширить это, чтобы справиться и с моим преобразованием struct -> dict.Любая помощь будет принята с благодарностью.