2013-04-10 51 views
2

好吧,我知道這個問題有數百萬的變化,我試圖(絕望地)通過它們,看看它們是否適用,無濟於事。ISO禁止聲明沒有類型的「標識符」。

目前我正試圖在頭文件中聲明一個雙端隊列,而該死的東西不會讓我由於提到的錯誤。在我的許多項目中,同樣的事情發生在我身上,我認爲它只是我缺乏C++類語法知識的基礎知識。

的main.cpp

#include <iostream> 
#include <fstream> 
#include <string> 
#include <deque> 
#include "Card.h" 
#include "random.h" 

using namespace std; 

void   createloop(); 
int    get_option(); 
deque <Card> make_new_deck(); 
deque <Card> load_new_deck(); 

int main() 
{ 
    createloop(); 
    return 0; 
} 

我沒有帶出爲了清晰,文件的剩餘部分,和IM相當確信它不是問題。出現在Card.h錯誤:

Card.h

#ifndef CARD_H 
#define CARD_H 

class Card 
{ 
    public: 
     Card(); 

     deque<string> param_name_deque; 
     deque<double> param_value_deque; 
     virtual ~Card(); 
    protected: 
    private: 
}; 

#endif // CARD_H 

card.cpp

#include "Card.h" 


Card::Card() 
{ 
    //ctor 
} 

Card::~Card() 
{ 
    //dtor 
} 

任何人誰可以幫助 - 在此先感謝!當我明白這裏有什麼錯誤時,我會很高興!

回答

6

你必須包括的std :: deque的和的std :: string在你的頭文件card.h

#include <string> 
#include <deque> 

同時,

deque<string> param_name_deque; 
deque<double> param_value_deque; 

應該

std::deque<std::string> param_name_deque; 
std::deque<double> param_value_deque; 
+0

ahhhh忘了寫「using namespace std」!完全忘了你必須在haeder文件中標識你的名字空間 - 令人驚訝的是我愚蠢。 – 2013-04-10 09:45:25

+0

@OwenMcConnell - 不寫'使用命名空間標準;'是正確的。你忘了用'std ::'限定名字。不要養成將所有東西都放入全局命名空間的習慣;有這些東西在他們自己的命名空間有很好的理由。 – 2013-04-10 15:01:22

3

您需要在聲明時指定namespaceparam_value_deque

std::deque<std::string> param_name_deque; 
std::deque<double> param_value_deque; 

,包括適當的標題:

#include <string> 
#include <deque> 

我會避免using namespace std,它可能看起來方便,但它最終會導致你的問題。

+0

好的謝謝 - 我試着從現在開始避免使用命名空間std。 – 2013-04-10 10:10:23

相關問題