命名类时出错

时间:2015-05-19 21:15:08

标签: class templates

我有这段代码(摘录):

for (itr = GameObjectList.begin(); itr != GameObjectList.end(); ++itr)
{
    if ((*itr)->GetComponent<Light>() && (*itr)->GetComponent<Light>()->GetEnable())
    {
           (*itr)->GetComponent<Light>()->Render();
   }

}

第3行和第5行出错。原因,名称&#34; Light&#34;这是我的引擎的一个组件,如果我将类Light的名称更改为任何其他名称(例如&#34; Light2&#34;)它可以工作!

GetComponent模板函数是:

template <typename T>
T* GetComponent()
{
     for(itr = CompList.begin() ; itr != CompList.end() ; ++itr)
    {

        if (T* type = dynamic_cast<T*>(*itr))
        {
            return type;
        }
    }
    return NULL;
};

f#%k正在发生什么?可能是文件损坏,我的cpp文件?我不知道

提前致谢!

编辑:

    error: no matching function for call to 'GameObject::GetComponent()'

1 个答案:

答案 0 :(得分:0)

我发现了错误!在GameObject类中,a有一个带有gameObject类型的枚举,其中一个元素是&#34; Light&#34;这个枚举是全球性的。解决方案是让枚举公开。