在'<'标记之前的预期初始化程序在链接列表堆栈标题文件中

时间:2017-10-08 00:23:11

标签: c++ linked-list stack

所以当我尝试编译时遇到了问题。错误似乎在我的头文件中。

#ifndef GENERIC_LINKED_LIST_STACK_H_
#define GENERIC_LINKED_LIST_STACK_H_
#include "Node.h"
#include <string>
#include <iostream>

template <class Type>
class genericLinkedListStack
{
    public:
    genericLinkedListStack();
    int size() const;
    void push(Type element);
    Type pop();
    bool empty() const;
    int top();

    private:
    node <Type> *first;     
};

template <class Type>
int stack<Type>::size() const
{
    node<Type> *newNode;
    newNode = new node<Type>;
    int count = 0;
    while (newNode!= NULL)
    {
        count++;
        newNode = newNode->next;
    }
    return count;
}

template <class Type>
void stack<Type>::push(Type element)
{
    node<Type> *newNode;
    newNode = new node<Type>;
    newNode -> data = element;
    newNode -> next = first;
    first = newNode;
}

template <class Type>
Type stack<Type>::pop()
{
    node<Type> *current = first;
    Type element = current -> data;
    delete current;
    return element;
}

template <class Type>
bool stack<Type>::empty() const
{
    return first == NULL;
}

template <class Type>
void stack<Type>::genericLinkedListStack()
{
    first = NULL;
}

template <class Type>
void stack<Type>::top()
{
    return front->data;
}


#endif // GENERIC_LINKED_LIST_STACK_H_

每次编译我的文件(包括头文件)时,都会收到此错误:

expected initializer before ‘<’ token

我在以下几行中得到了这个错误:23,37,47,56,62,68。 我已经回顾了无数问题,在线寻求我的答案的解决方案,但似乎这个问题包含一个更具体的问题,并没有真正存在的通用解决方案。

感谢您的帮助!

编辑1:Node.h文件

#ifndef NODE_H_
#define NODE_H_
#include <iostream>
#include <string>

using namespace std;

template <class Type>
struct node
{
    Type data;
    node *next;
};

#endif //NODE_H_

我得到的所有错误(在头文件中)

genericLinkedListStack.h:23:10: error: expected initializer before ‘<’ token
int stack<Type>::size() const
         ^
genericLinkedListStack.h:37:11: error: expected initializer before ‘<’ token
 void stack<Type>::push(Type element)
           ^
genericLinkedListStack.h:47:11: error: expected initializer before ‘<’ token
 Type stack<Type>::pop()
           ^
genericLinkedListStack.h:56:11: error: expected initializer before ‘<’ token
 bool stack<Type>::empty() const
           ^
genericLinkedListStack.h:62:11: error: expected initializer before ‘<’ token
 void stack<Type>::genericLinkedListStack()
           ^
genericLinkedListStack.h:68:11: error: expected initializer before ‘<’ token
 void stack<Type>::top()
           ^

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试提供属于名为stack的类的函数的定义,但您的类名为genericLinkedListStack