i have tried everything , i can't understand why it's not working.
g++ throw :
Queue.H:53: error: declaration of âoperator<<â as non-function
Queue.H:53: error: expected â;â before â<â token
Queue.H:59: error: expected â;â before âprivateâ
the code is:
#ifndef _Queue_H_
#define _Queue_H_
#include <iostream>
#include <string>
using namespace std;
template <class T, int size>
class Queue
{
public:
    Queue():_Num(0){
        T Arr=new T[size];
        for(int i=0;i<size;i++)
            Arr[i]=0;}
    ~Queue(){
        for (int i=0;i<_Num;i++)
            delete Arr_[i];
        delete [] Arr_;
    }
    bool IsEmpty() const{return !_Num ;}
    bool IsFull() const{return (_Num==size);}
    void count() const{return _Num;}
    T& Top() const {
        if(!IsEmpty())
            return Arr_[0];
        else
            throw("empty");
    }
    void operator << (const T & item ) {
        if(!IsFull()){
            Arr_[_Num+1]=item;
            _Num++;}
        else
            throw("full");}
    
    T  operator >> (T & item) {
        if(IsEmpty())
            throw("empty");
        
        item=Arr_[0];
        delete Arr_[0];
        for(int i=1;i<_Num;i++)
            Arr_[i-1]=Arr_[i];
        _Num--;
        return item;}
    
    T operator [] (const T &number){
        return (number<size) ?Arr_[number]:throw("overload");}
    
    friend ostream & operator << <T,size>(ostream & or ,const Queue<T,size> &a){
        for(int i=0;i<a._Num;i++)
            or<<a.Arr_[i];
        return or;
    }
    
private:
    T Arr_[size];
    int _Num;
};
 
     
     
    