Template Queue Help


#ifndef QUEUE_H
#define QUEUE_H
#include <cstddef>

template<class T>
class Queue
{
public:
Queue();
bool isEmpty();
void enqueue(T data);
void dequeue();
void dequeue(T reData);

private:
struct Node{
T date;
Node *next;
};

Node *frontPtr;
Node *backPtr;
int count;

};

#endif // QUEUE_H


#include "Queue.h"
#include <iostream>
using namespace std;


template<class T>
Queue<T>::Queue(): frontPtr(NULL), backPtr(NULL), count(0)
{
}

template<class T>
bool Queue<T>::isEmpty(){
return(count == 0);
}

template<class T>
void Queue<T>::enqueue(T data){
Node *newOne = new Node;
newOne->date = data;
newOne->next = NULL;
if(isEmpty()){
frontPtr = newOne;
}
else{
backPtr->next = newOne;
}
backPtr = newOne;
count++;
}

template<class T>
void Queue<T>::dequeue(){
if(isEmpty()){
cout << "Nothing inside" << endl;
}
else{
Node *temp = frontPtr;
if(frontPtr == backPtr){
frontPtr = NULL;
backPtr = NULL;
}
else{
frontPtr = frontPtr->next;
}
delete temp;
count--;
}
}

template<class T>
void Queue<T>:: dequeue(T reData){
if(isEmpty()){
cout << "Nothing in here" << endl;
}
else{
reData = frontPtr->date;
dequeue();
}
}

#include <iostream>
#include <string>
#include "Queue.h"
using namespace std;


int main()
{
Queue<int> bo;// Not sure why this wont run
bo.enqueue(2); // Error here as well
return 0;
}



Last edited on
C++ doesn't know how to convert from a constant number (i.e. 2) to a non-constant integer reference (which your functions expect). You may want to either add some consts or change your function so that you're not passing by reference.

Good luck!

-Albatross
I tried both method you have suggested however I still get the an error.
Queue\main.cpp|9|undefined reference to `Queue<int>::Queue()'|
Queue\main.cpp|11|undefined reference to `Queue<int>::enqueue(int)'|
||=== Build finished: 2 errors, 0 warnings ===|

By the way I am not sure how to post code in a more readable format any information would be great
Thanks in Advance

Topic archived. No new replies allowed.