【发布时间】:2019-12-05 00:48:50
【问题描述】:
我不确定为什么会出现此错误?我确实为我的节点和我的班级指定了类型。
不太清楚发生了什么。对于 StackLL 和 Node 类,我都指定了 .
.h 文件
using namespace std;
template<class Type>
class Node {
public:
Node(Type _data);
Type data;
Node* next;
};
template <class Type>
class StackLL {
public:
StackLL(); //constructor
~StackLL();
void pop();
void push(Type _data);
int size();
bool empty();
int lSize;
Node<Type>* top;
};
.cpp 文件
#include<iostream>
#include "stack.h"
using namespace std;
template <class Type>
Node<Type>::Node(Type _data) {
data = _data;
next = NULL;
};
template <class Type>
StackLL<Type>::StackLL() {
lSize = 0;
top = NULL;
};
template <class Type>
StackLL<Type>::~StackLL() {
delete top;
};
template <class Type>
void StackLL<Type>::push(Type _data) {
Node<Type>* temp = new Node(_data)
lSize++;
if (top == NULL) {
top = temp;
} else {
temp->next = top;
top = temp;
};
};
template <class Type>
void StackLL<Type>::pop() {
if (top == NULL) {
cout << "Empty";
} else {
Node<Type>* temp = top;
top = top->next;
temp->next = NULL;
free(temp);
lSize--;
};
};
template <class Type>
int StackLL<Type>::size() {
return lSize;
};
template <class Type>
bool StackLL<Type>::empty() {
if (lSize == 0) {
return true;
} else {
return false;
};
};
我的 stackLL push 函数发生错误,这里:
template <class Type>
void StackLL<Type>::push(Type _data) {
Node<Type>* temp = new Node(Type _data)
lSize++;
if (top == NULL) {
top = temp;
} else {
temp->next = top;
top = temp;
};
};
对于这一行:Node<Type>* temp = new Node(Type _data) 编译器告诉我““节点”之前的预期类型说明符
有什么想法吗?谢谢!
编辑:更改了这部分
Node<Type>* temp = new Node(Type _data) 到 Node<Type>* temp = new Node(_data) 但没有解决问题
【问题讨论】:
-
Node<Type>* temp = new Node<Type>(Type _data)工作吗? -
@ProxicT,哇,我觉得自己很愚蠢。非常感谢。是的,它有效......我什至在stackoverflow上搜索了这个,对于其他人来说,似乎他们在使用new时没有这样做。另外,我之前尝试过,但它失败的原因是因为在我的输入参数中我有 Type _data 而它应该只是 _data。非常感谢!
-
你不必觉得自己很愚蠢,这些愚蠢的错误都会发生在我们所有人身上:-)