模板队列代码在编译期间出错

时间:2014-11-12 17:11:11

标签: c++ templates c++11

这应该有效,但看起来缺少某些东西。我有一个队列类,在中定义 的 queue.h

template <typename T> 
class Queue{
 private: 
   Node<T> * head; 
   Node<T> * tail; 
   int size; 
   int capacity; 
 public:  
   Queue(int c): capacity(c) {}
   bool enqueue(T val); 
   bool dequeue(T & val); 
   bool isQueueEmpty(); 
   bool isQueueFull();  
};

在queue.cpp文件中我有

#include "queue.h" 

template <typename T> 
bool Queue<T>::enqueue(T val){
  if(isQueueFull())
    return false; 
 //set the new node
 Node<T> * temp = new Node<T>; 
 temp->val = val; 
 if(isQueueEmpty()){
   head = tail = temp; 
   head->next = nullptr; 
   head->prev = nullptr;
 }
 else {
   temp->next = head; 
   temp->prev = nullptr; 
   // link the head to it
   head->prev = temp; 
   //set the new node as head 
   head = temp; 
 }
 size++; 
 return true;  
}

dequeue和其他函数在此函数中类似地定义。现在我想在我的主要使用它们如下:

#include "queue.h"

int main(){
  Queue<int> myQ(5); 
  int val; 
  myQ.enqueue(3); 
  myQ.enqueue(4); 
}

当我用c ++ 11编译它时,会出现以下编译错误:

 undefined reference to `Queue<int>::enqueue(int)'

知道为什么吗?

0 个答案:

没有答案