raw_ctor.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 44 行

CPP
44
字号
// Copyright David Abrahams 2004. Distributed under the Boost// Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#include <boost/python/class.hpp>#include <boost/python/raw_function.hpp>#include <boost/python/make_constructor.hpp>#include <boost/python/dict.hpp>#include <boost/python/tuple.hpp>#include <boost/python/module.hpp>using namespace boost::python;class Foo{ public:    Foo(tuple args, dict kw)      : args(args), kw(kw) {}        tuple args;    dict kw;};object init_foo(tuple args, dict kw){    tuple rest(args.slice(1,_));    return args[0].attr("__init__")(rest, kw);}BOOST_PYTHON_MODULE(raw_ctor_ext){    // using no_init postpones defining __init__ function until after    // raw_function for proper overload resolution order, since later    // defs get higher priority.    class_<Foo>("Foo", no_init)         .def("__init__", raw_function(&init_foo))        .def(init<tuple, dict>())        .def_readwrite("args", &Foo::args)        .def_readwrite("kw", &Foo::kw)        ;}#include "module_tail.cpp"

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?