小编joe*_*_89的帖子

棋子层次结构设计:继承与类型字段

我有一个基础类

 class piece;
Run Code Online (Sandbox Code Playgroud)

以及包含派生对象的数组

piece* board[8][8];
Run Code Online (Sandbox Code Playgroud)

优势,通过虚拟功能进行清洁设计.缺点,如果我必须在板上找到一块或比较一件我必须恢复到动态铸造(或typeid).它很丑陋,在制作数百万个请求时可能会很糟糕.

另一方面,如果我创建一个单件类的数组,它有一个用于识别片段的类型字段,我没有这个问题(它应该更快)但我必须制作超级丑陋的switch语句.我想,由于件数是有限的,我不认为自己制造了那么多开关,这可能最终是一个更好的选择,你怎么看?

这很有趣(所以没有位板).

编辑1

阅读一些答案,我认为仅使用类型字段进行运算符重载(==,!= ...)可以带来两个单词的最佳效果.

boost :: variant看起来也很有趣.

c++ oop inheritance chess

7
推荐指数
2
解决办法
2361
查看次数

标签 统计

c++ ×1

chess ×1

inheritance ×1

oop ×1