【问题标题】:How to make a class public only to another class如何让一个班级只对另一个班级公开
【发布时间】:2021-12-29 14:37:14
【问题描述】:

我在 C++ 中有两个不同的类,Node 和 Graph。我想通过图中的方法访问 Node 的内容但不公开,我该怎么做?

【问题讨论】:

标签: c++ oop


【解决方案1】:

您可以使用friend 声明来指定classes 或您希望授予privateprotected 成员完全访问权限的函数。

例子:

class Node {
    // ...
private:
    friend class Graph;
    int x;
};

class Graph {
public:
    void foo(Node& n) {
        n.x = 1; // wouldn't work without `friend` above
    }
};

int main() {
    Graph g;
    Node n;
    g.foo(n);
}

【讨论】:

  • 战术说明:有时,并且经常在处理图形问题时,最好完全离开节点类public并将节点隐藏在图形类中,这样除了图形类之外没有人可以用。
  • @user4581301 同意。我没有考虑为什么 OP 想要这个。我认为在实际问题下评论更好:-)
  • @user4581301 像这样:godbolt.org/z/hxasadYKK
  • @rturrado 这看起来不像“两个不同的不同类”。同样,关于设计的建议最好作为评论给只给我们留下两个名字的 OP,NodeGraph
猜你喜欢
  • 2018-07-24
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多