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。 –