Я портирую модуль расширения Python, написанный на C ++, из Boost.Python в SWIG.
Код C ++ определяет абстрактный класс X
со статическим фабричным методом
class X {
public:
static X* create(const char* descr);
...
};
Метод фабрики возвращает указатель на экземпляр некоторого производного класса.
С помощью Boost.Python вы можете заключить класс C ++ X
в класс Python X
, который имеет
__init__(self, descr)
метод, который вызывает X::create
.Фактически это делается следующим образом:
namespace bp = boost::python;
bp::class_<X>("X", boost::no_init)
.def("__init__", bp::make_constructor(&X::create))
...
Есть ли способ сделать то же самое с SWIG?