int x;
cout << "Please enter how many classrooms there are: ";
cin >> x;
classrooms bunchaClassrooms[x]; //classrooms is a previously declared class.
出於某種原因,給出了錯誤 「非POD元素類型的可變長度數組的‘x’」 和我不知道爲什麼,如果我要使用教室的矢量,我怎麼能根據用戶的輸入輕鬆地填充它(使用for循環,我猜測)。
int x;
cout << "Please enter how many classrooms there are: ";
cin >> x;
classrooms bunchaClassrooms[x]; //classrooms is a previously declared class.
出於某種原因,給出了錯誤 「非POD元素類型的可變長度數組的‘x’」 和我不知道爲什麼,如果我要使用教室的矢量,我怎麼能根據用戶的輸入輕鬆地填充它(使用for循環,我猜測)。
您可以使用std ::向量:
std::vector<classrooms> bunchaClassrooms;
for (int i = 0; i < x; ++i)
{
classrooms c;
<... enter classrooms info ...>
v.push_back(c);
}
陣列與非恆定邊界並不好。
不要忘記正確調整()... –
@ g-makulik在調用push_back()之前,您不能調用'resize()'(但您可以調用reserve()來避免重新分配)。另一種方法是調用'resize()',或者直接用count來構造vector,然後分配'v [i] = c;',這更接近於模擬數組的使用。 –
@gx_當然,剛纔提到這是因爲OP的原始問題可能涉及訪問數組中的任意元素。 –
可變長度數組不是該語言的標準功能。你必須在堆上分配或創建一個向量。
你正在使用哪個編譯器? –
只是因爲在C++中不允許使用變長數組。 (實際上他們計劃用於C++ 14,但最終被轉移到研究組。) –
@gx_ GCC正確接受AFAIK。 –