Способен ли SWIG обернуть вложенные противопоставки при упаковке для создания кода Python?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Способен ли SWIG обернуть вложенные противопоставки при упаковке для создания кода Python?

Сообщение Anonymous »

Вопрос в заголовке. 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»