/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/python/doc/reference/manage_new_object.qbk
56 строк
1 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
[section boost/python/manage_new_object.hpp] [section Class `manage_new_object`] `manage_new_object` is a model of [link concepts.resultconverter.resultconvertergenerator_concept ResultConverterGenerator] which can be used to wrap C++ functions which return a pointer to an object allocated with a new-expression, and expect the caller to take responsibility for deleting that object. `` namespace boost { namespace python { struct manage_new_object { template <class T> struct apply; }; }} `` [endsect] [section Class `manage_new_object` metafunctions] ``template <class T> struct apply`` [variablelist [[Requires][`T` is `U*` for some `U`.]] [[Returns][`typedef to_python_indirect<T> type;`]] ] [endsect] [section Example] In C++: `` #include <boost/python/module.hpp> #include <boost/python/class.hpp> #include <boost/python/manage_new_object.hpp> #include <boost/python/return_value_policy.hpp> struct Foo { Foo(int x) : x(x){} int get_x() { return x; } int x; }; Foo* make_foo(int x) { return new Foo(x); } // Wrapper code using namespace boost::python; BOOST_PYTHON_MODULE(my_module) { def("make_foo", make_foo, return_value_policy<manage_new_object>()) class_<Foo>("Foo") .def("get_x", &Foo::get_x) ; } `` Python code: `` >>> from my_module import * >>> f = make_foo(3) # create a Foo object >>> f.get_x() 3 `` [endsect] [endsect]