Данная статья является продолжением первой части.
Продолжаем мучить Boost.Python. В этот раз настала очередь класса, который нельзя ни создать, ни скопировать.
Обернём обычные обычную сишную структуру с необычным конструктором.
И поработаем с возвращением ссылки на поле объекта C++, так чтобы сборщик мусора Python его не удалил ненароком. Ну и наоборот, сделаем альтернативный вариант, чтобы Python прибрал мусор после удаления того, что ему отдали на хранение.
Поехали…
Читать полностью »
Рубрика «класс» - 2
Объединяя C++ и Python. Тонкости Boost.Python. Часть вторая
2013-02-06 в 11:42, admin, рубрики: boost.python, c++, c++11, class, embedded, python, python3, wrapper, гибрид, класс, модуль, обертка, Программирование, скрипт, метки: boost.python, c++, c++11, class, embedded, python, python3, wrapper, гибрид, класс, модуль, обертка, скриптОбъединяя C++ и Python. Тонкости Boost.Python. Часть первая
2013-02-03 в 13:26, admin, рубрики: boost.python, c++, c++11, class, embedded, python, python3, wrapper, гибрид, класс, модуль, обертка, Программирование, скрипт, метки: boost.python, c++, c++11, class, embedded, python, python3, wrapper, гибрид, класс, модуль, обертка, скрипт Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать полностью »