2013-04-04 26 views
1

在我的文件main.h的頂部時,我有:錯誤嘗試使用矢量

#include <vector> 

class Blah 
{ 
    public: 
    Blah(){} 
    ~Blah(){} 
    protected: 
    vector<int> someVector; 
    public: 
    //methods 
}; 

當我嘗試編譯,矢量報關行給出了錯誤:

error C2143: syntax error : missing ';' before '<'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

error C2238: unexpected token(s) preceding ';'

我無法弄清楚是什麼原因造成的。有人看到我做錯了什麼?

+0

'error:no template named'vector';你的意思是'std :: vector'?'......我很快*預熱到叮噹產生的錯誤信息... – 2013-04-04 01:47:03

回答

7

vector類是std命名空間的一部分。您需要用std::vector<int>替代您的聲明。

+3

+1完全正確! - 但*請*不鼓勵'使用命名空間std' :) – 2013-04-04 01:37:51

+0

@DrewDormann我在主要的圖書館見過它,但很適合注意。 – 2013-04-04 01:38:26

+0

真的嗎?我現在真的很好奇......我只把它看作是學生必須*忘記*的東西。 – 2013-04-04 01:39:45

3

它在std命名空間:

std::vector<int> someVector;

2

vectorstd名字空間的一部分,所以你需要添加std::到你的宣言:

std::vector<int> someVector; 

由於建議是在另一個答案作出,我想也因爲它是considered bad practice