나는 EventMgr 클래스에 리스너를 등록 할 템플릿 함수가있다. 그러나 리스너를 등록하면 링커에서 "오류 LNK2019 : 해결되지 않은 외부 기호"을 표시합니다.템플릿 함수 포인터로 링커 오류가 발생하는 이유는 무엇입니까?
전채 코드 : (청취자입니다)
class EventMgr {
template< class T, class EvenT>
void RegisterListener(T* listener, int EventType, void (T::*MemFunc)(EvenT*));
}
SoundMgr이 이벤트에 등록하려고 :
SoundMgr::SoundMgr(void)
{
EventManager::GetInstance()->RegisterListener(this, 1, (&SoundMgr::handleBulletFired));
}
나는 그것을 연결하지 않습니다 이유는 확실하지 않다. 참조 유형을 찾을 수없는 이유는 무엇입니까?
코드를 형식화하십시오. – James
링커 오류는 해결할 수없는 기호의 이름을 언급해야합니다. 상징의 이름은 무엇입니까? RegisterListener입니까? –
1> SoundMgr.obj : 오류 LNK2019 : 해결되지 않은 외부 기호 "public : void __thiscall EventManager :: RegisterListener (클래스 Sound_Bulet_Fired *) (클래스 SoundMgr *, int, void (__thiscall SoundMgr :: *)) "(??함수 "public : __thiscallSoundMgr :: SoundMgr (void)"(?? 0SoundMgr @@ QAE @ XZ)에서 참조되는 $ RegisterListener @ VSoundMgr @@ VEvent_Bullet_Fired @@@ EventManager @@ QAEXPAVSoundMgr @@ HP81 @ AEXPAVEvent_Bullet_Fired @@@ Z @ * \t 템플릿 <클래스 T, 클래스 이벤트> \t 무효 개의 EventManager :: RegisterListener (T의 * 수신기, INT의 이벤트 유형, 무효 (T :: * MemFunc) (이벤트 : –
brainydexter