C++类设计问题

SSi*_*ht3 2 c++ subclass

我有一个类Node.此类可以相对于自身添加或删除其他节点.Node由Class类使用.为了防止在使用过程中直接修改节点(外部,IE不是由适当的类),并导致List类出现问题,节点添加/删除功能要么是受保护的,要么是私有的.这要求List类是Node的朋友.

但是,这个问题是List类本身是其他子类的模板类,添加原型/为每个子类添加friend关键字显然不是最佳解决方案.

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

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

这些是可能的,如果是的话,怎么样?

Che*_*Alf 6

标准库的std::list类模板是如何设计列表类的示例,以便不向客户端代码提供对内部节点等的访问.

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

但是,一般来说,信任一点更为实际,不要吝啬,以确保其他人的代码是正确的.在C++中表达所有使用限制是很多工作.开放一点可以节省大量的工作 - 所以这是一个权衡.

干杯&hth.,

  • +1用于信任客户端不是愚蠢的.因为这是C++.这就是我们如何滚动. (3认同)