2015-05-19 2 views
-1

У меня есть этот код (сниппет):Ошибка именования класс

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

} 

Ошибка в строке 3 и строке 5. Причина, название «Light», которая является составной частью моего двигателя, если я изменю имя класса Light для любого другого имени (пример «Light2»), он работает!

функция шаблона 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; 
}; 

, что е #% к происходит? возможно, повреждение файла, с моими файлами cpp? я не знаю

Заранее благодарим!

EDIT:

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

Какое ваше сообщение об ошибке? – mstbaum

+0

Вам нужно показать больше кода, например. вся функция содержит первый фрагмент кода. –

+0

нет кода, потому что он отлично работает с любым другим именем, только с «Light» сбой – lightbug

ответ

0

Я нашел ошибку! В классе GameObject a есть перечисление с типом gameObject, одним из элементов которого является «Свет», и это перечисление было глобальным. Решение состоит в том, чтобы сделать enum общедоступным.

Смежные вопросы