我有我的基类:
class UnitTestThread : public testing::Test
{
public:
/// purgeQueue()
template <typename T> void purgeQueue(const ___handle queue, T &data) const;
};
我的继承类:
class HmiTest : public UnitTestThread
{
public:
// Sets up the test fixture.
virtual void SetUp();
// ...
}
void HmiTest::SetUp()
{
// By default , purge all the queues
CONTROL_ACTION_PARAM controlAction;
purgeQueue(ApplicationContext.queueControlActionsToThermostat, controlAction);
}
我有一个链接错误:
HmiTest.obj : error LNK2019: unresolved external symbol "public: void __thiscall UnitTestThread::purgeQueue<struct CONTROL_ACTION_PARAM>(void * const,struct CONTROL_ACTION_PARAM &)const " (??$purgeQueue@UCONTROL_ACTION_PARAM@@@UnitTestThread@@QBEXQAXAAUCONTROL_ACTION_PARAM@@@Z) referenced in function "public: virtual void __thiscall HmiTest::SetUp(void)" (?SetUp@HmiTest@@UAEXXZ)
我不明白为什么......: - S
非常感谢你的帮助!
答案 0 :(得分:3)
您已声明了该方法,但尚未实现该方法。或者,如果你有,它在一个cpp文件中,这是不好的(需要在模板方法的标题中,或使用显式模板实例化)。
您需要在类定义之后实现该方法:
class UnitTestThread : public testing::Test
{
public:
/// purgeQueue()
template <typename T>
void purgeQueue(const ___handle queue, T &data) const;
};
template <typename T>
void UnitTestThread::purgeQueue(const ___handle queue, T &data) const
{
// Do something
}
答案 1 :(得分:2)
模板实现应包含在标题(.h)文件中