C++:基类中的模板方法
我有我的基本类:C++:基类中的模板方法,c++,templates,inheritance,C++,Templates,Inheritance,我有我的基本类: class UnitTestThread : public testing::Test { public: /// purgeQueue() template <typename T> void purgeQueue(const ___handle queue, T &data) const; }; 我有一个链接错误: HmiTest.obj : error LNK2019: unresolved external
class UnitTestThread : public testing::Test
{
public:
/// purgeQueue()
template <typename T> void purgeQueue(const ___handle queue, T &data) const;
};
我有一个链接错误:
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)
我不明白为什么…:-
非常感谢你们的帮助,伙计们 您已经声明了该方法,但尚未实现它。或者,如果您有,它在一个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
}
模板实现应该包含在header.h文件中purgeQueue在哪里定义?可能重复@Anthony您需要接受答案。我已经在我的UnitTestThread.cpp文件中实现了///purgeQueue模板void UnitTestThread::purgeQueueconst\uuuuuu handle queue,T&data const{//…}@Anthony,正如他所说,您的模板需要在头文件中定义,而不是在.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
}