在命名空间之外隐藏类成员

Hide class members outside namespace

本文关键字:成员 隐藏 命名空间      更新时间:2023-10-16

我有一个类的集合,这些类具有类似节点的关系。由于这个原因,我需要访问一些父/子函数,否则我想远离最终用户,因为它们只是混乱了建议的方法列表,没有意义,并且在他们自己的"生态系统"之外使用时破坏了事情。

我想如果他们都继承相同的基类与虚拟占位符函数,那么我可以访问受保护的成员,但显然不是。是否有一种方法可以隐藏类成员从外部访问某个命名空间或容器类,而从内部访问?

如果你真的需要访问一些受保护的/私有的数据,你可以创建朋友类。

从维基百科:

class B {
    friend class A; // A is a friend of B
private:
    int i;
};
class A {
public: 
    A(B& b) {
        b.i = 0; // legal access due to friendship
    }
};