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