使用typedef类型作为函数返回类型

时间:2015-06-17 03:16:55

标签: c++ typedef

我尝试使用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
}

1 个答案:

答案 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是一个从属名称。