1
4

2 回答 2

1
friend class SLinkedList<E>;  

此时SLinkedList尚未将其定义为模板,因此会出现错误。给 一个前向声明SLinkedList,一切都会好起来的。

添加这个: -

template <typename E>
class SLinkedList;
于 2017-01-24T02:42:44.363 回答
1
friend class SLinkedList<E>;

此模板尚未声明。您的 C++ 代码会以有序的方式编译,从源文件的开头到结尾。在此模板稍后在此头文件中声明之前,编译器不知道这是什么。

解决方法很简单:在头文件开头添加前向声明,因为SNode模板声明:

template <typename E> class SLinkedList;

template <typename E>
class SNode {
private:
    E elem;
    SNode<E> * next;
    friend class SLinkedList<E>;
};
于 2017-01-24T02:22:55.170 回答