尝试创建链表堆栈时出现链接器错误

Linker Error While Trying to Create Linked List Stack

本文关键字:链接 错误 创建 链表 堆栈      更新时间:2023-10-16

可能的重复项:
为什么模板只能在头文件中实现?
模板运算符重载函数上的未定义符号

对于我的学校作业,我需要制作一个程序,使用链表制作堆栈。不过,我一直收到链接器错误(特别是:错误LNK2019:未解析的外部符号"public:__thiscall Stack::Stack(void)"(??0?$Stack@H@@QAE@XZ) 在函数 _main 1>C:\Users\devon.taylor\Desktop\New folder\Debug\PA3.exe 中引用:致命错误LNK1120:1 个未解析的外部)

这是我的代码:

页眉:

template <class T>
class  Stack
{
public:
    Stack();
    Stack(T data);
    ~Stack();
    void push(T data);
    T pop();
    void display();
    bool isEmpty();
    bool isExist(T searchKey);
private:
    Stack<T> *top;
    Stack<T> *next;
    T mData;
};

功能:

#include "stack.h"
#include <iostream>
using namespace std;
template <class T>
Stack<T>::Stack()
{
    top=NULL;
}
template <class T>
Stack<T>::Stack(T data)
{
    mData = data;
    pNext = NULL;
}
template <class T>
Stack<T>::~Stack()
{
}
template <class T>
void Stack<T>::push(T data)
{
   Stack *ptr;
   ptr=new Stack<T>;
   ptr->mData=data;
   ptr->next=NULL;
   if(top!=NULL)
   {
      ptr->next=top;
   }
   top=ptr;
   cout<<"nNew item inserted to the stack";
}        
template <class T>
T Stack<T>::pop()
{

}
template <class T>
void Stack<T>::display()
{
}

主要功能:

#include <iostream>
#include "stack.h"
using namespace std;
void main ()
{
    Stack<int>* stack;
    stack = new Stack<int>;
    //stack->push(19);

    system("pause");
}

必须在头文件中嵌入模板函数,链接器才能选取它。有关更多详细信息,请参阅此问题。

另请查看C++常见问题解答以获取更多详细信息。