2017-10-08 92 views
-1

所以我尝试编译时遇到了问题。该错误似乎在我的头文件中。'<'标记之前的预期初始化器在链接列表堆栈头文件

#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() 
     ^
+0

这是您获得的第一个还是唯一的错误?什么是“堆栈”?你可以减少这个[mcve],包括'node'的定义吗? – aschepler

+0

将尽快处理它 –

回答

0

你似乎试图属于功能提供的定义一个名为stack的班级,但是您的班级名为genericLinkedListStack

+0

我有一种感觉是造成我的错误。将立即处理它。 –

+0

因此,对于这样的台词: '无效堆栈 ::推(类型元素)' 我取而代之的是: '无效genericLinkedListStack ::推(类型元素)' 然而,这样做,我得到新错误: –

+0

'genericLinkedListStack.h:62:59:错误:构造返回类型规范无效 空隙genericLinkedListStack :: genericLinkedListStack()' 'genericLinkedListStack.h:68:6:错误:原型“无效genericLinkedListStack : :top()'不匹配类中的任何'genericLinkedListStack ' void genericLinkedListStac ķ ::顶部()' 'genericLinkedListStack.h:16:7:错误:候选人为:int genericLinkedListStack ::顶部() INT顶部();' –