I can't run it.What error?How to fix it,profs?Code:#include <iostream.h> template <class T> class Queue { private: // Local Element Class template <class T> struct Element { T m_info; Element<T> *m_next; //Default Constructor Element<T>(T elemInfo, Queue<T>::Element<T> * next=NULL) { m_info=elemInfo; m_next=next; } }; // Header of Linked List Element<T> *m_head; public: // Default Constructor Queue(){ m_head=NULL; } // Destructor ~Queue(); // Insertion functions void Enqueue(T&); T& Dequeue(); T& Top(); bool isEmpty() { return m_head==NULL;} }; //Destructor template <class T> Queue<T>::~Queue() { Queue<T>::Element<T> *temp; // While there is still an Element at the head of the Queue while (m_head!=NULL) { // Keep pointer to Element temp=m_head; // Move to next Element m_head=m_head->m_next; // Free Element's memory delete temp; } } // Insert new Element to the Queue template <class T> void Queue<T>::Enqueue(T &toAdd) { // Create new Element, with m_head as it's next Queue<T>::Element<T>* temp=new Queue<T>::Element<T>(toAdd, m_head); // Set Queue head to new Element m_head=temp; } // Remove Element from Queue template <class T> T& Queue<T>::Dequeue() { Queue<T>::Element<T>* temp; Queue<T>::Element<T>* temp2; T* returnValue; temp=temp2=m_head; // If Stack is not empty if (temp!=NULL) { // While temp is not last Element temp=temp->m_next; while (temp!=NULL && temp->m_next!=NULL) { // Move to next Element temp=temp->m_next; temp2=temp2->m_next; } temp2->m_next=NULL; // Return Element if (temp!=NULL) { returnValue=new T(temp->m_info); delete temp; return *returnValue; } else { returnValue=new T(m_head->m_info); delete m_head; m_head=NULL; return *returnValue; } } else throw "Queue is empty!"; } // Get first Element in Queue template <class T> T& Queue<T>::Top() { Queue<T>::Element<T>* temp; Queue<T>::Element<T>* temp2; temp=temp2=m_head // If Stack is not empty if (temp!=NULL) { // While temp is not last Element temp=temp->m_next; while (temp!=NULL) { // Move to next Element temp=temp->m_next; temp2=temp2->m_next; } // Return Element return temp->m_info; } else throw "Queue is empty!"; } class point { public: int x,y; // Default constractor point (int n1=0, int n2=0):x(n1),y(n2){}; // Default copy constractor point (point &p2):x(p2.x),y(p2.y){}; // Assignment operator point& operator=(point &p2){ x=p2.x;y=p2.y; return *this;}; // operator != bool operator!=(point &p2) { if (p2.x==x && p2.y==y) return false; return true; } // operator == bool operator==(point &p2) { if (p2.x==x && p2.y==y) return true; return false; } // Basic display function void print() { cout<<"( "<<x<<" , "<<y<<" )"<<endl; } }; void main() { Queue<point> QU; point a(1,2), b(3,4), c(5,6), d(10,10), e(0,0), f(8,4); point t; cout<<"Adding items to the Queue..."<<endl; QU.Enqueue(a); QU.Enqueue(b); QU.Enqueue(c); QU.Enqueue(d); QU.Enqueue(e); QU.Enqueue(f); cout<<"Printing Queue..."<<endl; while (!QU.isEmpty()) { t=QU.Dequeue(); t.print(); } }