"Undefined reference to" Problem
-
Hallo, ich habe die folgende Methode in meiner "EventManager" Klasse:
template <class EVENT_TYPE> void processEvents(EventListener<EVENT_TYPE>* listener, const TypeInfo* eventType);im header
und
template <class EVENT_TYPE> void EventManager::processEvents(EventListener<EVENT_TYPE>* listener, const TypeInfo* eventType) { for(EventContainer::iterator it = events.begin(); it != events.end(); it++) { EventBase* event = *it; if(event->getTypeInfo() == eventType) { listener->onEvent((EVENT_TYPE*)event); } } }Und der GCC compiler sagt mir "undefined reference to processEvents(..)" an der Stelle, wo ich die Methode aufrufe. Wenn ich die ganze Methode im Header definiere, gehts komischerweise einwandfrei.. ?
template <class EVENT_TYPE> void processEvents(EventListener<EVENT_TYPE>* listener, const TypeInfo* eventType) { for(EventContainer::iterator it = events.begin(); it != events.end(); it++) { EventBase* event = *it; if(event->getTypeInfo() == eventType) { listener->onEvent((EVENT_TYPE*)event); } } }
-
Sergesinner schrieb:
Wenn ich die ganze Methode im Header definiere, gehts komischerweise einwandfrei.. ?
Du kannst bei Templates die Deklaration und Definition nicht in Header und Übersetzungseinheit aufteilen. Es muss alles im Header stehen. Es gibt auch böse Tricks, wo man dann die
*.cppim Header inkludiert. Oft nennt man diese Files dann aber nicht*.cpp.Gibt sehr viele Threads dazu im Forum oder Inet, einfach mal ein wenig suchen

Grüssli
-
-
Öhm... sieht so aus, als könnten deine Iteratoren ruhig const sein.