我尝试使用typedef类型作为我的成员函数的返回类型,我不知道为什么它会给我这个" LinkedList"不是类错误。有人可以给我一个提示吗?
template<class T>
class LinkedList {
struct Node;
public:
typedef Node* lstIterator;
lstIterator insert_after(const_lstIterator position, const T& );
// other code
private:
struct Node {
T data;
Node *next;
// default constructor
Node() = default;
// constructor with data
Node(const T& data) : data(data), next(NULL) {}
};
lstIterator head;
};
template<typename T>
LinkedList::lstIterator LinkedList<T>::insert_after(const_lstIterator position, const T& val) {
^^^^^^^^^^^^^^^^^^^^^
error: "LinkdedList" is not a class, namespace or scoped enumeration
}
答案 0 :(得分:2)
使用
template<typename T>
typename LinkedList<T>::lstIterator
LinkedList<T>::insert_after(const_lstIterator position, const T& val)
{
// implementation
}
相反,因为LinkedList
是模板类。 You need typename
因为LinkedList<T>::lstIterator
是一个从属名称。