|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下:
头文件:
template<class T>
class Iterator
{
ListNode<T>* cur;
public:
Iterator():cur(NULL){};
Iterator(ListNode<T>* point):cur(point){};
friend T operator ++(Iterator<T>& it);
friend T operator ++(Iterator<T>&it,int);
friend bool operator ==(Iterator<T> & it, ListNode<T>* point);
friend bool operator !=(Iterator<T>& it,ListNode<T>* point);
friend std::ostream& operator<<(std::ostream& stream, Iterator<T>& it);
void operator =(ListNode<T>* point);
ListNode<T>*& GetCur();
};
template<class T>
T operator ++(Iterator<T>& it)
{
it.GetCur() = it.GetCur()->GetLink();
T data;
data = it.GetCur()->GetData();
return data;
}
template<class T>
T operator++(Iterator<T>& it,int x)
{
T data;
data = it.GetCur()->GetData();
it.GetCur() = it.GetCur()->GetLink();
return data;
}
template<class T>
bool operator ==(Iterator<T>& it, ListNode<T>* point)
{
return it.GetCur() == point;
}
template<class T>
bool operator!=(Iterator<T>& it, ListNode<T>* point)
{
return it.GetCur()!= point;
}
template<class T>
std::ostream& operator<<(std::ostream& stream,Iterator<T> & it)
{
stream<<it.GetCur()->GetData();
return stream;
}
template<class T>
void Iterator<T>::operator=(ListNode<T>* point)
{
cur = point;
}
template<class T>
ListNode<T>*& Iterator<T>::GetCur()
{return cur;
}
main函数实现部分:
Iterator<int> a;
a = ListFirst.GetHead();
while(a!=ListFirst.GetTail())
{
++a;
cout<<a;
}
最后编译后报错:
错误 3 error LNK2019: 无法解析的外部符号 "int __cdecl operator++(class Iterator<int> &)" (??E@YAHAAV?$Iterator@H@@@Z),该符号在函数 _main 中被引用 d:\documents\visual studio 2010\Projects\test\test\test.obj
错误 2 error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Iterator<int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$Iterator@H@@@Z),该符号在函数 _main 中被引用 d:\documents\visual studio 2010\Projects\test\test\test.obj
错误 5 error LNK1120: 3 个无法解析的外部命令 d:\documents\visual studio 2010\Projects\test\Debug\test.exe 1
|
|