【发布时间】:2011-01-21 19:58:35
【问题描述】:
我有一个 EventMgr 类,它有一个模板函数来注册一个监听器。但是,当我注册一个监听器时,链接器给了我一个“error LNK2019: unresolved external symbol”。
开胃菜代码:
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));
}
我不确定为什么它不会链接。为什么找不到引用类型?
【问题讨论】:
-
请格式化您的代码。
-
链接器错误应该提到它无法解析的符号名称。符号的名称是什么?是RegisterListener吗?
-
1>SoundMgr.obj : 错误 LNK2019: 无法解析的外部符号 "public: void __thiscall EventManager::RegisterListener
(class SoundMgr ,int,void (__thiscall SoundMgr: :)(class Event_Bullet_Fired *))" (??$RegisterListener@VSoundMgr@@VEvent_Bullet_Fired@@@EventManager@@QAEXPAVSoundMgr@@HP81@AEXPAVEvent_Bullet_Fired@@@Z@Z) 在函数“public: __thiscallSoundMgr: :SoundMgr(void)" (??0SoundMgr@@QAE@XZ)
标签: c++ templates function-pointers linker-errors