Question: I have a structure called scene. Within the structure called scene, I need to make an array of other scene objects. Is this possible?

Answer: 
No, because before `scene` is completely defined, the compiler doesn't know how big it is, and doesn't know what size to make the array.

However, you can have an array of *pointers* to `scene`, because pointers (not counting pointers to members and other oddities - thanks Nawaz) are all the same size:

```
class scene {
    scene* array[20];
};

```

Alternatively, you can store a pointer that will point to a dynamic array allocated with `new[]` and deallocated with `delete[]`:

```
class scene {
    scene() : array(new scene[20]) { }
    ~scene() { delete[] array; }

    scene* array;
};

```

or even more alternatively, store a `vector<scene>`, a `vector` of `scene`s:

```
class scene {
    vector<scene> array;
};

```

and with `vector`, you get a resizable array with no manual memory management.
You can do it if you use `std::vector`. This is from some code I wrote yesterday:

```
#include <vector>
struct ChangeList // Tree of changes in a tree of values
  {
  int index ;
  std::vector<ChangeList> Changes ;
  } ;

```