2013-11-09 89 views
3

我基本上C++:錯誤:非POD元素類型的可變長度數組

int x; 
cout << "Please enter how many classrooms there are: "; 
cin >> x; 
classrooms bunchaClassrooms[x]; //classrooms is a previously declared class. 

出於某種原因,給出了錯誤 「非POD元素類型的可變長度數組的‘x’」 和我不知道爲什麼,如果我要使用教室的矢量,我怎麼能根據用戶的輸入輕鬆地填充它(使用for循環,我猜測)。

+0

你正在使用哪個編譯器? –

+0

只是因爲在C++中不允許使用變長數組。 (實際上他們計劃用於C++ 14,但最終被轉移到研究組。) –

+0

@gx_ GCC正確接受AFAIK。 –

回答

7

您可以使用std ::向量:

std::vector<classrooms> bunchaClassrooms; 
for (int i = 0; i < x; ++i) 
{ 
    classrooms c; 
    <... enter classrooms info ...> 
    v.push_back(c); 
} 

陣列與非恆定邊界並不好。

+0

不要忘記正確調整()... –

+1

@ g-makulik在調用push_back()之前,您不能調用'resize()'(但您可以調用reserve()來避免重新分配)。另一種方法是調用'resize()',或者直接用count來構造vector,然後分配'v [i] = c;',這更接近於模擬數組的使用。 –

+0

@gx_當然,剛纔提到這是因爲OP的原始問題可能涉及訪問數組中的任意元素。 –

2

可變長度數組不是該語言的標準功能。你必須在堆上分配或創建一個向量。

相關問題