微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

模板化函数静态成员

如何解决模板化函数静态成员

我目前正在开发一个实体组件系统,在该系统中我需要为不同的组件类型创建唯一的 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 举报,一经查实,本站将立刻删除。