我的代码中有很多错误。 但我不知道错误的事情...... 有常见的错误按摩,以及"无效使用模板名称 'node'没有参数列表","'head_ptr'未在此声明 范围","'tail_ptr'未在此范围内声明", "'t'未在此范围内声明" , "模板参数1无效","'Node'"之前的预期类型说明符 我不认为我的整体代码是错误的。 但是太多错误让我思考 编码的所有组成都是错误的.. 它是所有代码的一部分。
template <typename T>
Node* Node<t>::getNext(void)
{ return next; }
template <typename T>
class List
{
private:
Node* head_ptr; Node* tail_ptr; int numOfItems;
public:
List(); //constructor
int size(void); bool isEmpty(void);
void insertTail(T x);
void removeHead(void);
Node<T>* getHead(void);
Node<T>* getTail(void);
void insert_with_priority(T x);
};
template <typename T>
List<T>::List()
{ head_ptr = NULL; tail_ptr = NULL; numOfItems = 0; }
template <typename T>
void List<T>::insertTail(T x){
Node<t>* newTail = new Node(x);
tail_ptr->setNext(newTail);
tail_ptr = newTail;
numOfItems++;
}
template <typename T>
void List<T>::removeHead(void){
if(numOfItems == 0)
return 0;
if(numOfItems == 1){ //i.e. headptr == tail_ptr
delete head_ptr; head_ptr = NULL; tail_ptr = NULL;
&#39; 请给我很多反馈。
答案 0 :(得分:1)
即使您的问题不完整,我也会帮助您解决一个错误(并且它也可以解决其他后续错误)......
让我们走线
template <typename T>
Node* Node<t>::getNext(void)
{ return next; }
你说getNext
函数返回指向Node
的指针。但是,在这种情况下, Node
是什么?它不是类或类型,它是类或类型的模板。它不完整。您需要指定完整和完整的类或键入:
template <typename T>
Node<T>* Node<t>::getNext(void)
{ return next; }
请注意return-type,它现在是一个完整的类。