0

我正在尝试将我的组件池生成器更改为使用可变参数模板,以试图避免所有 Init() 函数并改为使用每个组件构造函数。但是我无法编译它。

这是组件池类,它有一个基类,其方法将被父类覆盖:

class iComponentPool
{
public:
    virtual iComponent* Create(EntityId entityId) = 0;
    virtual iComponent* Get(EntityId entityId) = 0;
    virtual void Destroy(EntityId entityId) = 0;
};

template<typename T>
class componentIterator
{
public:
    typename std::vector<T>::iterator beginIT;
    typename std::vector<T>::iterator endIT;

};

template<typename T, typename ... Targs>
class componentPool : public iComponentPool, public componentIterator<T>
{
public:
    T* Create(EntityId entityID, Targs... Args) override
    {
    };

    T* Get(EntityId entityId) override 
    { 
        return nullptr;
    };

    void Destroy(EntityId entityId) override 
    {
    };
};

然而,编译器抱怨(并且理所当然地)componentPool Create 方法没有覆盖基类方法。有没有办法解决这个问题?

实际错误(VS 2015)是:

'ECS::componentPool<T,statics::staticAsset *&>::Create':
  method with override specifier 'override' did not override any base class methods
4

0 回答 0