我有这段代码(摘录):
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()'
答案 0 :(得分:0)
我发现了错误!在GameObject类中,a有一个带有gameObject类型的枚举,其中一个元素是&#34; Light&#34;这个枚举是全球性的。解决方案是让枚举公开。