我有一个class Player从大块内存中播放数据的数据,这些内存由许多相同的块组成.
typedef char chunk_t[100];
typedef struct {
chunk_t data[100]
} blockOfMemory_t;
Run Code Online (Sandbox Code Playgroud)
播放器本身理论上可以用于不同的布局和数据内容,因此我想以可重用的方式对其进行编程.为此,我想到了这样的事情:
class Player {
public:
Player() { ... }
virtual ~Player() { ... }
void play()
{
for (int i = 0; i < getNumChunks(); i++)
{
if (chunkHasX(i) || chunkHasY(i))
playChunk(i);
}
}
protected:
virtual int getNumChunks() = 0;
virtual bool chunkHasX(int chunkIndex) = 0;
virtual bool chunkHasY(int chunkIndex) = 0;
virtual void playChunk(int chunkIndex) = 0;
}
Run Code Online (Sandbox Code Playgroud)
通过继承并实现孩子的数据细节,我可以实现可重用性.
但是,目标是ARM Cortex-M4处理器,速度非常重要.出于这个原因,我希望在使用虚拟功能时会有性能上的缺陷.所以我正在寻找一种方法来实现相同类型的可重用性,可以在编译时解决,并允许内联chunkHasX(..)等.
这是尖叫的"模板" - …