Sie können ein Array von Objekten auf dem Stapel † über erstellen:
myarray stackArray[100]; // 100 objects
Und auf dem Heap † (oder "Frees"):
myarray* heapArray = new myarray[100];
delete [] heapArray; // when you're done
Aber es ist am besten Speicher nicht selbst verwalten. Stattdessen verwenden ein std::vector:
#include <vector>
std::vector<myarray> bestArray(100);
Vektor, der ein dynamisches Array ist, das (Standard) Elemente aus dem Heap zuordnet. ††
Da Ihre Klasse keinen Standardkonstruktor hat, erstellen sie auf den Stapel benötigen Sie bitte den Compiler zu informieren, was in den Konstruktor übergeben:
myarray stackArray[3] = { 1, 2, 3 };
Oder mit einem Vektor :
// 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));
natürlich könnte man es immer einen Standardkonstruktor geben:
class myarray
{
int i;
public:
myarray(int a = 0) :
i(a)
{}
};
† Für die Pedanten: C++ hat nicht wirklich einen "Stapel" oder "Haufen"/"Frees". Was wir haben, ist die "automatische Speicherung" und "dynamische Speicherung". In der Praxis richtet sich dies an der Stapelzuordnung und der Heap-Zuweisung aus.
†† Wenn Sie eine dynamische Zuordnung aus dem Stapel möchten, müssen Sie eine maximale Größe definieren (Stapelspeicher ist der Zeit bekannt), und geben Sie dem Vektor einen neuen Zuordner, damit er stattdessen den Stapel verwendet.
Ist das eine Hausaufgabenfrage? Es klingt wie einer. – Amber
Nein ... Das ist keine Hausaufgabenfrage ... Gefunden im Internet während der Vorbereitung für mein Vorstellungsgespräch .... :) –