在C++中是否有一种方法可以将类的接口呈现为除了少数几个类之外的所有类的私有?

Jam*_*tta 2 c++ class-design

我正在写一个B-link树及其伴随的子类,如数据页类和节点类等.

我想知道有没有办法保护节点和页面的公共接口,这样只有b-link树类本身才能访问它们,而不会同时将页面和节点的私有方法暴露给b-link类?

IE我已经想过简单地将页面和节点的"公共"界面更改为受保护的类别,然后将B-link树声明为朋友,但是这使得b-link树可以访问我想要保留的私有方法私人的.

Oli*_*rth 6

在我的头顶,你可以做类似的事情:

class FooAdapter;

class Foo
{
private:
     void funcToExpose();
     void funcToHide();
     friend FooAdapter;
};

class FooAdapter
{
private:
     Foo foo;
     void funcToExpose() { foo.funcToExpose(); }

     friend SomeFriend;
};
Run Code Online (Sandbox Code Playgroud)

(没有编译或测试,但你应该明白.)