【发布时间】:2014-03-22 01:22:08
【问题描述】:
我在 cygwin 中使用 gcc 4.8.2 进行编译,编译完成时没有出现错误。但链接后,我收到以下消息:
bin/libUsersMgmnt.a(CUsersMgmnt.cpp.o):在函数中
nsUserMgmnt::CUsersMgmnt::CUsersMgmnt()': /home/HCAST2/v1.05-dev/UsersMgmnt/CUsersMgmnt.cpp:23: undefined reference toint nsMsgHandler::CMsgHandler::createLocationUserMap()' /home/HCAST2/v1.05-dev/UsersMgmnt/CUsersMgmnt.cpp:23:(.text+0x19f): 重定位被截断以适应:针对未定义符号的 R_X86_64_PC32 `int nsMsgHandler::CMsgHandler::createLocationUserMap()' collect2:错误:ld 返回 1 个退出状态
我有这个基类:
Header File CMsgHandler.h
namespace nsMsgHandler
{
class CMsgHandler
{
protected:
template<class enhFlags> createLocationUserMap();
};
}
代码文件CMsgHandler.cpp
... some code
using namespace nsMsgHandler;
... some code
template <class enhFlags>
int CMsgHandler::createLocationUserMap()
{
.....
}
这是派生类: 头文件 CUsersMgmnt.h
namespace nsUserMgmnt
{
class CUsersMgmnt : public CMsgHandler
{
public:
CUsersMgmnt();
};
}
代码文件 CUsersMgmnt.cpp
... some code
using namespace nsUserMgmnt;
... some code
CUsersMgmnt::CUsersMgmnt()
{
this->createLocationUserMap<nsUserMgmnt::types::Class1>();
}
我很确定代码中存在错误。我试图解决这个问题几个小时。
【问题讨论】:
标签: c++ templates cygwin derived-class