使用箭头( - >)实现模板Linked List类

时间:2014-04-24 02:37:31

标签: c++ list linked-list

我遇到了实现模板Linked List类的问题。 我以前制作过链表,但不是模板。

在.cpp文件(实现)中,似乎成员指针变量未被识别为成员,并且在这些指针不起作用后使用->。 在问题附近没有语法错误的下划线,但是当我突出显示变量时,描述说“未知”和变量的详细信息

(更奇怪的是,我在示波器中放置的任何内容都不会出现下划线语法错误。)

// ListLinked.h
    #include <iostream>
    using namespace std;

template <typename DataType>
class List {
private:
    struct ListNode {
        DataType dataItem;
        ListNode* next;
    };

    ListNode* head;
    ListNode* cursor;

public:
    List(int ignored = 0);  
    List(const List& other);
    List& operator=(const List& other);
    ~List();                                    

    void insert(const DataType& newDataItem);
    void remove();                                  
    void replace(const DataType& newDataItem);
    void clear();

    bool isEmpty() const;
    bool isFull() const;

    void gotoBeginning();                           
    void gotoEnd();                                 
    bool gotoNext();                                
    bool gotoPrior();                               

    void showStructure() const;

    DataType getCursor() const;                         
};

//ListLinked.cpp (just the simplest one of the many member functions that use ->)

template <typename DataType>
bool List<DataType>::gotoNext(){
if (cursor->next != NULL)      //"next" is not seen as a member pointer variable
    cursor = cursor->next;
}

// all the other member functions start with
// template <typename DataType>
// [type] List<DataType>:: {...}

我怀疑我的visual express 2010出了问题,但我不确定

1 个答案:

答案 0 :(得分:0)

使用模板化的类/函数时,需要在源文件中包含整个实现。将所有模板引用放在.h文件中作为第一步;)

如果您想在没有功能代码的情况下保持标题清洁,可以创建一个名为linkedlist.impl的文件并放入您的定义中。在标题的末尾,在警卫之前,添加#include "linkedlist.impl"