2012-12-10 28 views
0

我想創建一個特定的大小,255(最大)的向量.. 它不適用於我,就像我在互聯網上看到的例子...不能創建一個指定大小的向量

我使用Microsoft Visual C++ 2012 ...

我當前的代碼:

#include <iostream> 
#include <string> 
#include <vector> 
#include <stdlib.h> 

using namespace std; 

const int MAX = 255; 

class test 
{ 
vector <string> Name(MAX); 
}; 

int main() 
{ 
system("PAUSE"); 
} 

它給了我2個錯誤:

Error 1 error C2061: syntax error : identifier 'MAX'

2 IntelliSense: variable "MAX" is not a type name

感謝您的幫助!

+0

在C++ 11,你可以用'矢量名稱{MAX};'但是,這隻適用於vector的情況,因爲initializer構造函數與'std :: string'的int類型不兼容。更清楚地說,使用'int'類型而不是'std :: string',向量將包含1個元素 - 而不是256個默認初始化元素。 – chris

回答

3

這不是類聲明的有效語法。嘗試:

class test 
{ 
    vector <string> Name; 
    test() : Name(MAX) {} 
}; 

你可以寫vector <string> Name(MAX);當你創建一個變量(在你的情況,你聲明的成員)。例如:

int main() 
{ 
    vector <string> Name(MAX); 
} 

將是完全有效的。

+0

'vector'後面有空格嗎? –

+0

@AlexanderChertov是的。 –

+0

非常感謝! – AmitM9S6

0

您不能像這樣在類聲明中初始化數據成員。使用該類的構造函數中的成員初始化列表來初始化vector<string> Name

test::test 
:Name(MAX) 
{ 
    // 
} 

你的主要會是這樣的。

test t1 ; 

它會自動調用構造函數和t1所有字段將被創建,包括vector<string> Name

0

無法將參數傳遞給類聲明中的std::vector構造函數。你應該把,在構造函數的類,這樣,它利用通過初始化列表做的:

class test 
{ 
    std::vector<std::string> Name; 

    public: 

    test(): 
     Name(MAX) 
    { 
    } 
}; 
相關問題