gpt4 book ai didi

C++类设计题

转载 作者:太空狗 更新时间:2023-10-29 23:47:04 24 4
gpt4 key购买 nike

我有一个节点类。此类可以添加或删除相对于自身的其他节点。 Node 由 List 类使用。为了防止节点在使用期间被直接修改(外部,IE 而不是适当的类)并导致 List 类出现问题,节点添加/删除函数是 protected 或私有(private)的。这要求 List 类是 Node 的友元。

但是这样做的问题是List类本身就是其他子类的模板类,为每个子类添加原型(prototype)/添加friend关键字显然不是最好的解决方案。

我将如何设计 Node 和 List 类/子类以便:

  • 节点不能在外部自行构建,只能通过特定的类/子类构建?
  • 节点可以构造/移除上面给出的其他节点吗?
  • 节点函数只能由特定类访问(列表、列表子类和列表帮助类 - 列表帮助类不是列表的子类)?
  • 上面给出的节点变量(Item)是可公开访问的吗?
  • List、List子类和List helper类可以直接修改或间接修改Node的非公共(public)变量吗?

这些是否可能,如果可能,如何实现?

最佳答案

标准库的 std::list 类模板是如何设计列表类的示例,以便客户端代码无法访问内部节点等。

没有访问权限,没有不受欢迎的干预......

但是,一般来说,更实际的做法是信任一点,而不是将确保他人代码正确的责任扛在自己的肩上。在 C++ 中表达所有的使用限制需要做很多工作。开放一点可以节省很多工作——所以这是一种权衡。

干杯,

关于C++类设计题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com