Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++:基类中的模板方法_C++_Templates_Inheritance - Fatal编程技术网

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
}