相关疑难解决方法(0)

避免嵌入式目标上的虚拟功能

我有一个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(..)等.

这是尖叫的"模板" - …

c++ virtual templates

2
推荐指数
1
解决办法
1372
查看次数

标签 统计

c++ ×1

templates ×1

virtual ×1