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 + -
显示快捷键?