C 中的向上,降低和隐藏方法



我正在编写一个C 库,该库需要创建一个复杂的对象(d),但返回我的库用户一个指向简化对象(b)的指针(隐藏了许多复杂对象的方法)。我决定通过将指针返回简化的基类(B),并将我所有的复杂功能添加到派生类(d)(如下:

)来实现这一点:
class B {
  virtual void simple() = 0;
}
class D : public B {
  void simple() { cout << "visible simple stuff" ; }
  void complex() { cout << "invisible complex stuff" ; }
}

在内部创建我的对象d,但我返回一个倒播指针,如下所示:

D Derived;
B *Bptr = &Derived;
return Bptr;
  1. 这是将功能隐藏用户隐藏功能的正确方法,同时使库中可见的所有其他功能?

  2. 是否将.h文件隐藏为D类,这是防止我的库用户访问D方法的唯一方法?(降低到D类)我将以开放源代码释放库,因此库的用户可以访问D类定义。

关于问题#1 :是的,如果您提供出厂方法以及'简单''接口:

class B {
public:
    static B * create();
    virtual void simple() = 0;
};

在B的实现文件(CPP)中:

B *B::create()
{
    return new D(); //or whatever 'hidden' implementation 
}

关于您的#2 :隐藏功能首先是简化的,旨在对图书馆用户的宠爱,而不是惩罚的约束。因此,完全隐藏D类,让(好)用户对此感到满意。

相关内容

  • 没有找到相关文章

最新更新