我有一个片段的基类
class piece;
和一个包含派生对象的数组
piece* board[8][8];
优点,通过虚拟函数进行简洁的设计。缺点是,如果我必须在板上找到一块或比较一块,我必须恢复到动态铸造(或 typeid)。它很丑陋,并且在发出数百万个请求时可能会消耗性能。
另一方面,如果我创建一个单件类的数组,它有一个用于识别件的类型字段,我就不会遇到这个问题(而且它应该更快),但我必须制作超级丑陋的 switch 语句。我想,由于部件的数量是有限的,而且我不认为自己会做那么多的开关,这最终可能是一个更好的选择,你觉得呢?
这是为了好玩(所以没有位板)。
阅读一些答案,我认为仅将类型字段用于运算符重载(==
, !=
, ...) 可以发挥这两个词的精华。
The boost::variant
看起来也很有趣。
或者,如果您的类集有限 - 即您知道数量,请使用变体和访问者。例如,boost::variant<king, queen, bishop, knight ...>
该板是由这种类型的二维阵列组成的。现在要进行询问,您可以使用访客...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)