ben_scott1.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 55 行
CPP
55 行
// 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 <iostream>using namespace boost::python;using namespace boost;struct Product {};typedef shared_ptr<Product> ProductPtr;struct Creator{ virtual ~Creator() {} virtual ProductPtr create() = 0;};struct Factory{ void reg(Creator* c) { mC = c; } ProductPtr create() { std::cout << "Name: " << (typeid(*mC)).name() << std::endl; return mC->create(); }private: Creator* mC;};struct CreatorWrap : public Creator{ CreatorWrap(PyObject* self) : mSelf(self) {} ProductPtr create() { return call_method<ProductPtr>(mSelf, "create"); } PyObject* mSelf;};BOOST_PYTHON_MODULE(ben_scott1_ext){ class_<Product, ProductPtr>("Product"); class_<Creator, CreatorWrap, noncopyable>("Creator") .def("create", &CreatorWrap::create) ; class_<Factory>("Factory") .def("reg", &Factory::reg, with_custodian_and_ward<1,2>()) .def("create", &Factory::create) ;}#include "../test/module_tail.cpp"
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?