#include #include #include #include #include using namespace boost::python; using namespace boost; using namespace std; class A { public: A(int _v) : v(_v) {} int v; }; weak_ptr< A > stored_a; // store a shared_ptr void setWeakPtr(shared_ptr< A > a) { stored_a = a; } void outputPtr() { cout << stored_a.lock()->v << endl; } BOOST_PYTHON_MODULE(_weak_ptr) { class_< A, shared_ptr< A > >("A", init()); def("setWeakPtr", &setWeakPtr); def("outputPtr", &outputPtr); }