2010-04-22 75 views
2

我有安裝下面的頭文件來創建一種使用陣列堆棧我得到在第7行以下操作:ISO C++禁止「棧」的聲明無類型

error: ISO C++ forbids declaration of 'Stack" with no type.

我認爲類型是輸入值。感謝您的幫助,謝謝。

#ifndef ARRAYSTACKER_H_INCLUDED 
#define ARRAYSTACKER_H_INCLUDED 
// ArrayStacker.h: header file 
class ArrayStack { 
    int MaxSize; 
    int EmptyStack; 
    int top; 
    int* items; 
public: 
    Stacker(int sizeIn); 
    ~Stacker(); 
    void push(int intIn); 
    int pop(); 
    int peekIn(); 
    int empty(); 
    int full(); 
}; 
#endif // ARRAYSTACKER_H_INCLUDED 

回答

7

error: ISO C++ forbids declaration of "identifier" with no type.錯誤表示聲明的類型標識符標識符本身是未找到聲明的類型。

例如,如果你寫的代碼中的以下內容:

 
ArrayStack Stack; 

,如果你未能包括在「ArrayStack」被定義頁眉線之上會給你這樣的錯誤。如果您不小心使用了Stack而不是ArrayStack(例如,在聲明變量或將它用作函數的返回類型等時),您也會得到這樣的錯誤。我還應該指出,你的標題有一個相當明顯的錯誤,你可能想糾正;一個類的構造函數和析構函數必須匹配類的名字。編譯器會感到困惑,因爲當它看到「堆棧器」時,它將把它解釋爲一個名爲「堆棧器」的函數,在這裏你只是忘了給它一個返回類型(它不會意識到你實際上意味着因爲這是構造函數,並且簡單地將其拼寫)。

+0

是的。謝謝。我混淆了不使用不同於Java的類名的文件名的約定。但是這個班不是檔案名稱。哎呀!好答案。 – JDragon314159 2010-04-22 03:36:15

+0

@JKid,您的歡迎。另外,請通過upvoting來表示您的讚賞。 – 2010-04-22 04:07:07

+0

好的。給予好評?得弄清楚然後做。謝謝你讓我知道。 – JDragon314159 2010-04-26 01:01:11

11

構造函數和析構函數有類的名稱,這是ArrayStack,不Stacker

+0

是的,修復構造函數名稱,看看你是否仍然得到錯誤...如果你繼續得到錯誤,然後發佈你的構造函數實現。 – Adam 2010-04-22 03:08:16

+0

已解決!!謝謝你。 – JDragon314159 2010-04-26 01:00:13

相關問題