C ++中不同类的不同访问权限

时间:2015-10-23 08:11:50

标签: oop visual-c++

我对访问权限有疑问。

我正在用C ++(面向对象)编写一个Game Of Life版本 我需要帮助的部分有三个类:

  • Storage类用于在单元格中存储单元格。当然,这个数组是私有的,类有公共方法来设置单元格的LifeState并返回单元格的LifeState。
  • Manager类应该管理单元格,这基本上意味着它是唯一能够访问SetCell方法的类。
  • Neighbourfinder类对我来说很有意思:它应该能够使用Storage的ReturnCell方法来查找单元格的生存邻居而不是SetCell方法。

我可以将SetCell设为私有,将Manager设为友好的存储类,但这也意味着Manager可以直接访问数组,这是我不想要的。 简而言之:

一个类有一个Array和两个方法。每个方法应该可以访问不同的类,而不允许任何类访问该数组 我希望这是可以理解的,不会被标记为重复。

1 个答案:

答案 0 :(得分:0)

StorageManager类几乎总是一个坏主意。您的设计导致编码问题。 Neighbourfinder是另一个遵循“动词”模式的类,也可能是一个同样糟糕的主意。

相反,您想要的主要类是Board。它知道董事会规则,这就是为什么它被称为Board。因此,Board::SetCellprivateBoard::nextRound()方法可以是公开的。

我还可以看到Board::countLiveNeighbours方法,但也可以是private,因为仅在nextRound的实现中需要这样做。