我有一个链接列表
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;运算符,以便使它与流类型(文件,键盘)无关?
我无法在谷歌上找到任何相关内容。
答案 0 :(得分:0)
C ++输入流共享一个公共基础istream
,因此如果您根据istream重载operator>>
,则该实现对每种类型的输入流都有效。
结帐this answer for a similar question。它完全解释了。