在 .h 文件中生命智能指针,在 .cpp 文件中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <boost/shared_ptr.hpp> #include <boost/make_shared.hpp>
class TSObject { public: void f(); { std::cout << "ptr"; } };
typedef boost::shared_ptr<TSObject> TSObjectPtr;
TSObjectPtr p = TSObjectPtr(new TSObject); 或 TSObjectPtr p = Boost::make_shared<TSObject>();
p->f();
p.reset(new TSObject());
|
智能指针类型转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <boost/enable_shared_from_this.hpp>
class TSParentObject::publicboost::enable_shared_from_this<TSObject> { public: void f() { std::cout << "parent"; } };
typedef boost::shared_ptr<TSParentObject> TSParentObjectPtr;
class TSChildrenObject : public TSParentObject { };
typedef boost::shared_ptr<TSChildrenObject> TSChildrenObjectPtr;
#define TS_CAST(from ,to) boost::dynamic_pointer_cast<to::element_type>(from)
TSChildrenObjectPtr Children = boost::make_shared<TSChildrenObject>(); TSParentObjectPtr Parent = TS_CAST(ChildObject, TSParentObjectPtr);
|