我试图将组件池生成器更改为使用可变参数模板,以避免所有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'的方法未覆盖任何基类方法。