我正在用gcc 4.8.2編譯cygwin,編譯完成時沒有錯誤。但聯繫的時候,我收到以下消息:C++調用派生類中基類的模板方法
bin/libUsersMgmnt.a(CUsersMgmnt.cpp.o): In function
nsUserMgmnt::CUsersMgmnt::CUsersMgmnt()': /home/HCAST2/v1.05-dev/UsersMgmnt/CUsersMgmnt.cpp:23: undefined reference to
int nsMsgHandler::CMsgHandler::createLocationUserMap()' /home/HCAST2/v1.05-dev/UsersMgmnt/CUsersMgmnt.cpp:23:(.text+0x19f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `int nsMsgHandler::CMsgHandler::createLocationUserMap()' collect2: error: ld returned 1 exit status
我有這個基類:
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>();
}
我敢肯定,有在代碼中的錯誤。我試圖解決這個問題幾個小時。
非常感謝,這個工作完美,再次感謝 – Trungus