我有一个类Node。这个类可以添加或删除与自己相关的其他节点。Node被List类使用。为了防止在使用过程中(外部,即不是通过适当的类)直接修改节点,并导致List类出现问题,节点的添加/删除函数要么是protected或private。这需要List类是Node的友元。
然而,这样做的问题在于List类本身是其他子类的模板类,为每个子类添加原型/添加friend关键字显然不是最佳解决方案。
如何设计Node和List类/子类,以便:
- Node 不能被外部构造,只能由特定的类/子类构造?
- Node 可以根据上述条件构造/删除其他节点?
- 仅特定类(List、list子类和list辅助类 - list辅助类不是list的子类)可以访问Node函数?
- 给定以上条款,节点变量(Item)是公开可访问的吗?
- List、list子类和list辅助类可以直接或间接修改Node的非公共变量吗?
这些是否可能,并且如果可能,应该怎么做呢?
list
中的node
的权限呢?node
是列表实现的内部细节,不应该泄漏到列表之外。对于列表迭代,您可以提供一个iterator
类型,它具有访问权(但受您控制),只会提供访问和递增操作...与STL列表非常相似...再次,请查看那里的代码。 - David Rodríguez - dribeas