这应该有效,但看起来缺少某些东西。我有一个队列类,在中定义 的 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)'
知道为什么吗?