1

所以我目前正在将队列实现为单链表。一切都很好,但是编译器在我的 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;
} 

这是我的节点结构:

template <typename Type>
struct nodeType {
    Type dataItem;
    nodeType<Type> *next;
};

这似乎是一个非常简单的错误,但我没有看到是什么原因造成的。希望我不会太愚蠢,但这不会是第一次。

4

1 回答 1

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;
} 
于 2012-10-15T16:26:32.097 回答