C ++重载运算符>>在链表数据结构中

时间:2013-06-22 14:56:37

标签: c++ data-structures overloading operator-keyword

我有一个链接列表

template<class T> 
class Node<T>
{
    typedef T elementType;
    typedef Node<T>* position;

    elementType _element;
    position _next; 

};



template <class T>
class LinkedList
{
     public:

          typedef  Node<T>::position position;  
          typedef  Node<T>::elementType elementType; 

           //operatori
           bool empty() constprevious;
           unsigned int size() constprevious; //convertire il tipo ritornato in unsigned int!! per tutte classi e metodi rilevanti **LEO**
           elementType read(const position) constprevious;
           void write(const position p, const elementType)previous;
           void insert(const elementType)previous;
           void insert(const position, const elementType)previous;
           void delete(position)previous;
           position first() constprevious;
           position last() constprevious;
           position next(position) constprevious;
           position previous(position) constprevious;
           void deleteAll();

    private:
        position _first;
            position _last;
            int _numElements;   
};


template<class T>
istream &operator>> (istream &input, LinkedList<T> &linkedList )
{
 //operator Code 

    return is;
}

**请注意:上面的代码可能无法编译,因为我通过修改我的原始代码得到它,这要长得多。无论如何,因为我只需要指示如何继续,这应该没问题。

我想重载运算符&gt;&gt;以某种方式,在我的代码中,我可以编写类似

的内容
#include <cstdlib>
#include <iostream>

using namespace std;

//#include "LinkedList.h"


int main(int argc, char *argv[])
{
 LinkedList linkedList;

 cin>>linkedList; //<-- operator>> call.

    system("PAUSE");
    return EXIT_SUCCESS;
}

但是,我如何实现&gt;&gt;运算符,以便使它与流类型(文件,键盘)无关?

我无法在谷歌上找到任何相关内容。

1 个答案:

答案 0 :(得分:0)

C ++输入流共享一个公共基础istream,因此如果您根据istream重载operator>>,则该实现对每种类型的输入流都有效。

结帐this answer for a similar question。它完全解释了。