3

I basically have

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

For some reason it gives the error 'variable length array of non-POD element type 'x'' and I have no idea why, if I were to use a vector of classrooms instead, how could i easily populate it (using a for loop i'm guessing) depending on the user's input.

Remy LeBeau
  • 65
  • 1
  • 4

2 Answers2

7

You can use std::vector:

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

Array with non-constant boundary isn't good.

HEKTO
  • 3,876
  • 2
  • 24
  • 45
  • 1
    @g-makulik You must not call `resize()` before calls to `push_back()` (but you can call `reserve()` to avoid reallocations). The other way is to call `resize()`, or rather directly construct the vector with a count, then assigning `v[i] = c;`, which closer mimics the use of an array. – gx_ Nov 09 '13 at 20:19
  • @gx_ Yes of course, just mentioned this because the OP's original question might involve accessing arbitrary elements from the array. – πάντα ῥεῖ Nov 09 '13 at 20:25
2

Variable-lengthed arrays is not standard feature of the language. You have to allocate on the heap or create a vector.

David G
  • 94,763
  • 41
  • 167
  • 253