1

cout我在链接列表显示函数中重载运算符时遇到问题。我在这个函数中使用了一个迭代器,所以我不知道我应该怎么做,因为它说没有声明迭代器。

我不知道如何cout在同一个函数中使用带有重载的迭代器,因为这是我第一次使用重载。

template <class T> class List
{
        private:
                Cell<T>* tete;
                Cell<T>* queue;
                int longeur;

        public:

        class Iterator
        {
            Cell<T>* elem;
         public:
        Iterator(List<T>* L){elem=L->tete;};
        T operator*(){return elem->data;};
        void operator ++(){elem=elem->suivant;};
        operator bool (){return  elem!=NULL;};
        T operator ->(){return &elem->data;};
        };
        friend std::ostream & operator<< ( std::ostream & out , const List<T> & L ){L.afficher(out);};
        friend class List<T>::Iterator;
                //Constructeur & Destructeur
                List<T>(void);
                ~List<T>(void);

        int ajout_en_tete (List<T>& a,T Val);
        int ajout_en_fin  (List<T>& a, T Val);
        void concat (List<T>& a , const List<T>& b);
        void copie (const List<T>& a, List<T>& b);
        int supprimer (List<T>& a, int pos);
        void supprimer_liste(void);
        int Taille (const List<T>& a);
        int acces (const List<T>& a , int pos);
        std::ostream afficher ( std::ostream & out);
        void test_vide(List<T>& a);
        Iterator iter(){return Iterator(this);};

};


std::ostream afficher ( std::ostream & out)
{
  Iterator it=iter();

        if(a.longeur==1)
        {
            out <<*it<< endl;
        }
        else
        {
            while(it)
                {

                out <<*it<< endl;
                ++it;
                }
        }
}
4

0 回答 0