如何解决模板化函数静态成员
我目前正在开发一个实体组件系统,在该系统中我需要为不同的组件类型创建唯一的 ID,最好不要在组件类中存储任何额外的数据(因为这将需要静态虚拟方法,它不需要工作,所以我每次比较一些东西时都需要实例化一个新组件)。我最终采用的方法是创建一个模板化方法:
/*statically instances unique pointers for different
TComponents - each with their own templated instance*/
template<typename TComponent>
static const COMP_ID& GetTComponentID()
{
DERIVES_FROM_COMPONENT_ASSERT;
static COMP_ID ID = Component::NewID();
return ID;
}
然后在我的组件基类中有一个静态方法,每次在 GetTCompomponentID() 中初始化一个新的静态 COMP_ID 时都会返回一个唯一的 ID:
//retrieves static data identifier
static const COMP_ID& NewID()
{
static COMP_ID currID = 0;
currID++;
return currID;
}
使用它,我可以为我使用的每个组件派生创建唯一的静态 ID,而无需将数据作为虚拟函数存储在类本身中(它不能是静态的,因此每次需要比较时都需要它)将需要一个新实例)
除了静态方法成员使用的明显额外内存之外,使用这样的系统是否存在任何潜在问题?
-谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。