晚上好。我一直在尝试在C++中实现队列类,以之前创建的链表类为基础。 链式链表:
#include <cstddef>
#include <iostream>
#include <cstdio>
using namespace std;
template <class T>
class LinkedList {
public:
LinkedList() {
head = NULL;
}
~LinkedList() {
MakeEmpty();
}
struct Node {
T value;
Node *next;
};
Node* getHead() {
return head;
}
void Print();
void Insert();
void MakeEmpty();
private:
Node *head; // Head of the linked list.
};
队列类:
#include "LinkedList.h"
template <class T>
class Queue {
public:
Queue() {
LinkedList<T>::Node *tnode = Q.getHead();
}
~Queue() {
Q.MakeEmpty();
}
void Enqueue( T x ) {
LinkedList<T>::Node *cnode = Q.getHead();
//Find the last element of Q
while( cnode -> next != NULL ) {
cnode = cnode -> next;
}
//Add x to the end of the queue
Q.Insert( x );
}
void Dequeue() {
LinkedList<T>::Node *hnode = Q.getHead();
//Rest of function
}
void Print() {
Q.PrintList();
}
private:
LinkedList<T> Q;
};
你可能已经注意到,我正在将它们制作成模板类。编译时,系统提示Queue类的构造函数中找不到tnode变量。有什么建议可以解决这个问题吗?
编辑1:我收到的错误信息如下:
RCQueue.h: 在构造函数‘Queue::Queue()’中:
RCQueue.h:8:28: error: ‘tnode’ was not declared in this scope LinkedList::Node *tnode = Q.getHead();
我的构造函数的主要目的是将LinkedList类中的“head”指针初始化为NULL。我还想知道如何声明在另一个模板类中声明的结构体变量。