register_ptr.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 56 行
CPP
56 行
// 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.hpp>#include <boost/shared_ptr.hpp>using namespace boost;using namespace python;struct A{ virtual int f() { return 0; }};shared_ptr<A> New() { return shared_ptr<A>( new A() ); }int Call( const shared_ptr<A> & a ){ return a->f();}int Fail( shared_ptr<A> & a ){ return a->f();}struct A_Wrapper: A{ A_Wrapper(PyObject* self_): self(self_) {} A_Wrapper(PyObject* self_, const A& a): self(self_), A(a) {} int f() { return call_method<int>(self, "f"); } int default_f() { return A::f(); } PyObject* self;};BOOST_PYTHON_MODULE(register_ptr){ class_<A, A_Wrapper>("A") .def("f", &A::f, &A_Wrapper::default_f) ; register_ptr_to_python< shared_ptr<A> >(); def("New", &New); def("Call", &Call); def("Fail", &Fail);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?