Нет, поскольку до того, как scene
будет полностью определено, компилятор не знает, насколько он велик, и не знает, какой размер сделать массив.
Однако вы можете иметь массивиз указателей до scene
, потому что указатели (не считая указателей на членов и других странностей - спасибо Навазу) имеют одинаковый размер:
class scene {
scene* array[20];
};
В качестве альтернативы, вы можете сохранить указателькоторый будет указывать на динамический массив, выделенный с помощью new[]
и освобожденный с помощью delete[]
:
class scene {
scene() : array(new scene[20]) { }
~scene() { delete[] array; }
scene* array;
};
или, что еще более альтернативно, сохранит vector<scene>
, vector
из scene
s:
class scene {
vector<scene> array;
};
и с vector
вы получаете массив с изменяемым размером без ручного управления памятью.