Метод класса Variadic с виртуальным базовым классом - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь изменить генератор пула компонентов, чтобы использовать шаблоны с переменным числом, чтобы избежать всех функций 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 :: Create ': метод со спецификатором переопределения' override 'не переопределял методы базового класса.

...