Puede crear una matriz de objetos en la pila † a través de:
myarray stackArray[100]; // 100 objects
Y en el montón † (o "almacén libre"):
myarray* heapArray = new myarray[100];
delete [] heapArray; // when you're done
Pero es mejor no gestionas la memoria tú mismo En su lugar, utilizar un std::vector:
#include <vector>
std::vector<myarray> bestArray(100);
Un vector es una matriz dinámica, que (por defecto) asigna los elementos de la pila. ††
Debido a que su clase no tiene constructor por defecto, para crear en la pila es necesario dejar que el compilador sabe qué pasa en el constructor:
myarray stackArray[3] = { 1, 2, 3 };
O con un vector :
// C++11:
std::vector<myarray> bestArray{ 1, 2, 3 };
// C++03:
std::vector<myarray> bestArray;
bestArray.push_back(myarray(1));
bestArray.push_back(myarray(2));
bestArray.push_back(myarray(3));
Por supuesto, siempre se puede dar un constructor por defecto: 012
class myarray
{
int i;
public:
myarray(int a = 0) :
i(a)
{}
};
† Para los pedantes: C++ no tiene realmente una "pila" o "montón"/"almacén libre". Lo que tenemos es duración de "almacenamiento automático" y "almacenamiento dinámico". En la práctica, esto se alinea con la asignación de pila y la asignación de pila.
†† Si desea asignar "dinámicamente" de la pila, necesitará definir un tamaño máximo (se conoce el almacenamiento de la pila antes de tiempo), y luego darle al vector un nuevo asignador para que use la pila en su lugar.
¿Es esta una pregunta de tarea? Suena como uno. – Amber
No ... Esto no es una pregunta para la tarea ... Lo encontré en Internet mientras me preparaba para mi entrevista de trabajo ... :) –