【发布时间】:2017-01-18 04:17:30
【问题描述】:
我正在尝试创建一个LinkedList,它获取用户信息并将其存储到其节点中。之后它将显示用户信息。我已经通过这个工作了,这就是我所拥有的:
#include <iostream>
using namespace std;
template <typename T>
class Node
{
T data;
Node* next;
};
template <typename T>
class LinkedList
{
public:
//Default constructor
LinkedList(){
head = NULL;
tail = NULL;
}
void addData(T val){
Node* newNode = new Node;
newNode->data = val;
newNode->next = NULL; // we add newNode at end of linked list
if( head == NULL){
head = newNode;
tail = newNode;
}
else{
tail ->next = newNode;
tail = newNode;
}
}
void printData() {
for(Node* i = head; i!=NULL; i = i -> next){
cout << i->data << " " ;
}
}
private:
//Declare the head and tail of the LinkedList
Node* head;
Node* tail;
};
int main(){
LinkedList<string> usrInput;
cout << "Enter a number or word : ";
string input ;
cin >> input;
usrInput.addData(input);
usrInput.printData();
LinkedList<int> numbers;
while (true)
{
cout<< "Enter a number (-1 to stop): ";
int num;
cin >> num;
if (num == -1)
break;
numbers.addData(num);
}
numbers.printData();
}
问题是,当我编译我的程序时,我收到一堆错误,这些错误涉及超出范围的成员变量。成员变量不应该是私有的吗?
这是我为调试器准备的:
46:9: error: invalid use of template-name 'Node' without an argument list
47:9: error: invalid use of template-name 'Node' without an argument list
In constructor 'LinkedList<T>::LinkedList()':
18:9: error: 'head' was not declared in this scope
19:9: error: 'tail' was not declared in this scope
In member function 'void LinkedList<T>::addData(T)':
23:13: error: missing template arguments before '*' token
23:15: error: 'newNode' was not declared in this scope
23:29: error: invalid use of template-name 'Node' without an argument list
26:13: error: 'head' was not declared in this scope
28:13: error: 'tail' was not declared in this scope
32:13: error: 'tail' was not declared in this scope
In member function 'void LinkedList<T>::printData()':
38:17: error: missing template arguments before '*' token
38:19: error: 'i' was not declared in this scope
38:23: error: 'head' was not declared in this scope
【问题讨论】:
标签: c++ scope linked-list singly-linked-list