我遇到了实现模板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出了问题,但我不确定
答案 0 :(得分:0)
使用模板化的类/函数时,需要在源文件中包含整个实现。将所有模板引用放在.h文件中作为第一步;)
如果您想在没有功能代码的情况下保持标题清洁,可以创建一个名为linkedlist.impl
的文件并放入您的定义中。在标题的末尾,在警卫之前,添加#include "linkedlist.impl"
。