Если у вас есть файл интерфейса, который выглядит примерно так:
%module test
// Forward declare, SWIG knows nothing more:
struct example;
typedef struct example example;
void foo(example *ex);
example *bar();
(или, возможно, использует директиву %include
для ввода заголовочного файла), тогда вы можете заставить SWIG делать больше, чем по умолчанию, просто добавив:
struct example {};
перед первым упоминанием примера в вашем файле интерфейса. Этого достаточно, чтобы SWIG рассматривал его как нечто большее, чем просто указатель. Вполне разумно предложить частичные определения SWIG 1 только тех частей struct
(или class
в C ++), которые вас интересуют - в этом случае звучит так, будто в вашем настоящем ничего нет определение struct example
, которое вас волнует.
1 Существуют некоторые проблемы с типами C ++, которые являются абстрактными или не имеют конструктора по умолчанию.