模板化函数静态成员

问题描述

我目前正在开发一个实体组件系统,在该系统中我需要为不同的组件类型创建唯一的 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 (将#修改为@)