class Shape
class Triangle : public Shape
1.shared_ptr
定义类:
实例化:
定义数组:
辅助定义:
实例化 :
得到普通指针
普通指针封装
主动释放:
2.dynamic_pointer_cast
3.lexical_cast
基本类型转换
class Triangle : public Shape
1.shared_ptr
定义类:
typedef boost::shared_ptr<class Shape> ShapeSharedPtr;
实例化:
ShapeSharedPtr shapeSP = ShapeSharedPtr(new Shape());
定义数组:
typedef boost::shared_ptr<std::vector<ShapeSharedPtr>> ShapeListSharedPtr;
辅助定义:
typedef std::vector<boost::shared_ptr<class Shape>> ShapeList;
实例化 :
ShapeListSharedPtr shapeListSP = ShapeListSharedPtr(new ShapeList);
得到普通指针
Shape* pShape = shapeSP.get();
普通指针封装
Shape* shapePointer = new Shape();
ShapeListSharedPtr shapePointerSP = ShapeListSharedPtr(shapePointer);
主动释放:
shapeSP.reset();
2.dynamic_pointer_cast
typedef boost::shared_ptr<class Triangle> TriangleSharedPtr;
ShapeSharedPtr triangleShapeSP = ShapeSharedPtr(new Triangle());
TriangleSharedPtr triangleSP = boost::dynamic_pointer_cast<Traingle>(
triangleShapeSP);
if(trangleSP.get())
{
//为子类对象
}
3.lexical_cast
基本类型转换
String strNum = "3.1415926";
try
{
int nNum = boost::lexical_cast<int>(strNum);
}catch(boost::bad_lexical_cast e)
{
//转换失败
}