我有一个地图类,其中包含一个包含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/