2017-10-08 42 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頂部();' –

相關問題