c++求解释,怎么改,老是提示undefined reference to operator<<(std::ostream,const)

#include<iostream>usingnamespacestd;template<classelemType>classlinkList;template<cla... #include<iostream>
using namespace std;

template<class elemType> class linkList;
template<class T> ostream&operator<<(ostream&,const linkList<T>&);
template<class elemType>class Node;

template<class elemType>
class Node
{
friend class linkList<elemType>;
friend ostream &operator<<(ostream&,const linkList<elemType>&);
private:
elemType data;
Node<elemType>*next;
public:
Node(const elemType &x,Node<elemType>*N=NULL){data=x;next=N;}
Node():next(NULL){}
~Node(){}
};
template<class elemType>
class linkList
{
friend ostream&operator<<(ostream&,const linkList<elemType>&);
protected:
Node<elemType>*head;
int makeEmpty();
public:
linkList(){head=new Node<elemType>;}
~linkList(){makeEmpty();delete head;}
int create(const elemType &flag);
};

template<class elemType>
int linkList<elemType>::makeEmpty()
{
Node<elemType>*p=head->next,*q;
head->next=NULL;
while(p!=NULL){q=p->next;delete p;p=q;}
return 0;
}

template <class elemType>
int linkList<elemType>::create(const elemType &flag)
{
elemType tmp;
Node<elemType>*p,*q=head;
cout<<"input the data of the link list "<<flag<<"to represent the end "<<endl;
while(true)
{
cin>>tmp;
if(tmp==flag)break;
p=new Node<elemType>(tmp);
q->next=p;
q=p;
}
return 0;
}

template <class T>
ostream &operator<<(ostream &os,const linkList<T>&obj)
{
Node<T>*q=obj.head->next;
os<<endl;
while(q!=NULL){os<<q->data;q=q->next;}
return os;
}

int main()
{
linkList<int> a;
a.create(1);
a.create(2);
a.create(3);
a.create(5);
a.create(8);
a.create(13);
a.create(0);
cout<<a;
return 0;
}
展开
 我来答
云迹飘遥秋风岚
2014-06-09 · 超过35用户采纳过TA的回答
知道答主
回答量:100
采纳率:100%
帮助的人:80.4万
展开全部
函数重载吧,你定义了两个模板类,要写两个operator<<,还有注意友元类的声明顺序
汽车安全出行
2014-06-09 · TA获得超过490个赞
知道小有建树答主
回答量:416
采纳率:66%
帮助的人:298万
展开全部
标明一下哪一句报错。
追问
linklist类里的friend ostream&operator&);
追答
template 
ostream &operator&obj)
{
Node*q=obj.head->next;
osdata;q=q->next;}
return os;
}
注意友元函数本身不是模板函数,必须显示定义其具体化
//template
ostream &operator&obj)
{
Node*q=obj.head->next;
osdata;q=q->next;}
return os;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式