我正在尝试将我的组件池生成器更改为使用可变参数模板,以试图避免所有 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