所以我目前正在将队列实现为单链表。一切都很顺利,但是编译器在我的dequeue方法中标记了我。
这就是Visual Studio对我的咆哮:
错误C2065:'已删除':未声明的标识符
这是我的dequeue方法,它应该返回刚刚从队列中删除的值:
template <typename Type>
Type QueueLinked<Type>::deque() {
if (queueFront == 0) {
cout << "Queue is empty! There's nothing to remove!" << endl;
} else {
nodeType<Type> *temp;
temp = queueFront;
queueFront = queueFront->next;
Type Removed = temp->dataItem;
delete temp;
if (queueFront == 0) {
queueRear = 0;
}
}
return Removed;
}
这是我的节点struct:
template <typename Type>
struct nodeType {
Type dataItem;
nodeType<Type> *next;
};
这似乎是一个非常简单的错误,但我没有看到导致这种情况的原因。希望我不会太愚蠢,但这不是第一次。
答案 0 :(得分:1)
你在else
区块中声明它,当然它在它之外是未声明的。在if
之前声明它。
尝试这种方式:
template <typename Type>
Type QueueLinked<Type>::deque() {
Type Removed;
if (queueFront == 0) {
cout << "Queue is empty! There's nothing to remove!" << endl;
} else {
nodeType<Type> *temp;
temp = queueFront;
queueFront = queueFront->next;
Removed = temp->dataItem;
delete temp;
if (queueFront == 0) {
queueRear = 0;
}
}
return Removed;
}