我程序中的类之一使用了一些第三方库。库对象是我类的私有(private)成员:
// My.h
#include <3pheader.h>
class My
{
...
private:
3pObject m_object;
}
这样做的问题-我程序中使用My类的任何其他单元都应配置为包括3p header 。转移到另一种3p将会危及整个构建...
我看到两种解决此问题的方法-一种是使3pObject变为extern,然后将m_Object转换为指针,并在构造函数中对其进行初始化。第二个是创建“接口(interface)”和“工厂”类并导出它们...
您能提出解决该问题的另一种方法吗?
最佳答案
使用“pimpl”成语:
// header
class My
{
class impl;
std::auto_ptr<impl> _impl;
};
// cpp
#include <3pheader.h>
class My::impl
{
3pObject _object;
};
关于C++ header -接口(interface)和实现细节之间的分隔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/203823/