Вопрос в заголовке. I try to wrap c++ code to python, which has nested structs (struct definitions inside another struct definition), and the inner struct doesn't appear in my python module (albeit I want it to appear).
I consulted the Swig documentation (version 4.3, 6.27 Nested classes), and it says:
If the target language doesn't support Вложенные классы непосредственно, или поддержка не внедряется в языковом модуле (как в настоящее время для Python), тогда видимые вложенные классы перемещаются в
То же пространство имени, что и содержащий класс (иерархия гнездования «сплющивается»). < /p>
< /blockquote>
для меня. неправильный? Если да, то что мне нужно сделать по -другому?
или это ожидаемое поведение? Если да, то что мне нужно сделать, чтобы сделать внутреннюю структуру видимой?struct TestA {
double memberA1;
double memberA2;
struct TestB {
double memberB1;
double memberB2;
};
};
struct TestC {
double memberC1;
double memberC2;
};
< /code>
и мой файл интерфейса выглядит так: < /p>
%module test
%{
#include "test-Swig.h"
%}
%include "test-Swig.h"
< /code>
Из того, что я прочитал в документации, я ожидаю, что у меня будет доступ к Testa, Testb и Testc, которые все появляются в одном и том же прицеле в Python. Вместо этого появляются и могут использоваться Testa и Testc, но TestB отсутствует. < /P>
Полученный файл test.py, созданный SWig действительно содержит классы A и C, но он не содержит класса b. < /P>
Минимальный код питона, пытаясь использовать класс Bfrom build import test
test_class_b = test.TestB()
< /code>
дает ошибку: < /p>
e attributeerror: module 'build.test' не имеет атрибута 'testb'. Вы имели в виду: 'testa'?
Подробнее здесь: https://stackoverflow.com/questions/795 ... ython-code