C++怎样把第三方库隐藏在实现下面

来源:互联网 发布:数据分析师有前途吗 编辑:程序博客网 时间:2024/05/16 06:05

相信在做项目过程中,大家肯定会用一大堆开源库,笔者就曾经用到了BOOST、PCL、GDAL、OPENCV、GEOS等等。有时候甚至会更换某个开源库(效率问题或其他原因),甚至是编译太慢(为了智能指针就弄个BOOST进来未免大材小用了),如果能把第三方库隐藏在你自己的类下面那是再好不过了(它对你整个工程的影响只是这个类而已)。

可以使用pimpl技术,其实就是个适配器,举个栗子:

geometry.h//头文件


class geos::geom::Geometry;

class Geometry

{

public:

bool contain(vertex point);

private:

geos::geom::Geometry* m_ptGeom;

};


geometry.cpp//源文件

#include "geometry.h"

#include <geos\geom\CoordinateSequence.h>
#include <geos\geom\GeometryFactory.h>


bool Geometry::contain(vertex point)

{

return m_ptGeom->contain(point);

}


如此就把geos隐藏在你类之下了,引用Geometry时不会觉察到geos的存在,有一天你换掉geos也不会引起大规模的编译


0 0