我有一个地图类,其中包含一个包含MapEntitys的向量。 MapEntity是继承自Factory,Farm和其他3个类的类。

这5个类都应该每隔几秒钟被“滴答”一声,这时它们都将对每个类单独执行一个功能,但是只有map类应该能够“勾号”它们。

我如何在C ++中支持这种类型的封装?朋友吗我应该只使用公共方法而不滥用这些方法吗? (尽管为了更好的实践,我更喜欢适当的封装,即使不会重新分发此代码)。

最佳答案

从语法上讲,您可以使用任何一种。

但是,如果要从外部“选中” MapEntities,则tick方法应该是其公共方法的一部分。实际上,它应该是MapEntity类的虚拟公共方法。

是的,公共方法是正确的封装。他们告诉班级的用户它可以做什么。在这种情况下,用户为Map类,并且可以为tick MapEntities。

仅当MapEntities设计为仅由Map使用时,才应考虑其他解决方案(朋友,匿名名称空间等)。

关于c++ - 组合类C++中的封装,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5206994/

10-09 05:11