不多说,先贴问题代码
template<class type> LinkList<type> MergeList(LinkList<type> *first,LinkList<type>* second);
template<class type> class Node{
friend class LinkList<type>;
friend LinkList<type> MergeList(LinkList<type> *first,LinkList<type>* second);
friend void print();
private:
type data;
Node * next;
public :
Node():next(nullptr){}
Node(type d):data(d){}
};
MergeList模版友元函数的声明聪明的你发现什么错误没有,如果没发现,那么定义的时候会发现无法访问Node的私有成员。
下面是对MergeList的友元声明的改正:
friend LinkList<type> MergeList<type>(LinkList<type> *first,LinkList<type>* second);
加上<type>,就像调用MergeList的时候要加上<??> 为什么这样做了,因为产生一个某种类型的Node的时候,肯帝是只允许相应类型的友元函数来访问的咂,所以你看上面的Friend class LinkList<type>也是一样加上了<type>,