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