Die Speicherung von Klasse-Objekt in ein array
Schauen Sie sich bitte die folgenden:
dispenserType type[4];
dispenserType appleJuice();
type[0] = appleJuice;
dispenserType orangeJuice();
type[1] = orangeJuice;
dispenserType mangoLassi();
type[2] = mangoLassi;
dispenserType fruitPunch();
type[3] = fruitPunch;
wie Sie sehen können, habe ich gespeichert, die verschiedene Objekte in der type
array.
Den dispenserType
Klasse hat einen Konstruktor, legt die Anzahl der items auf 20.
so haben wir int numberfItems
für das Objekt appleJuice
auf 20 festgelegt und so weiter und so Fort.
Die gleiche Klasse hat auch die folgenden Methoden: Methode, sinkt die numberOfItems
durch eine:
void dispenserType::makeSale()
{
numberOfItems--;
}
int dispenserType::getNoOfItems() const
{
return numberOfItems;
}
Wenn Sie zum Beispiel die folgenden genannt:
appleJuice.makeSales
cout << appleJuice.getNoOfItems() << endl;
dann würde das Programm zeigt die richtige numberOfItmes
19. Auf der anderen Seite, wenn cout<<type[0].getNoOfItems()
genannt wird, dann wäre es die Anzeige der Nummer 20.
Dieses Verhalten führt mich zu glauben, dass appleJuice
und type[0]
sind zwei separate Objekte.
Meine Fragen ist, gibt es eine Möglichkeit, erstellen Sie ein array von Objekten, ohne sich zu deklarieren, die ein Objekt und speichern in einem array, wie ich es gemacht habe wie ich es Tat?
danke.
- Dein code gar nicht kompilieren. Können Sie nach ein paar realistisch-code, einschließlich der Erklärung von
type
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie richtig,
type[0]
undappleJuice
sind zwei verschiedene Objekte.Option #1 - Sie können verwenden Sie ein array von Objekten, ohne Klonen jedes Objekt:
Option #2 - Sie können verwenden Sie ein array von Zeigern anstelle eines Arrays von Objekten:
Und natürlich, müssen Sie jedem zugeordneten Objekt zu einem späteren Zeitpunkt während der Ausführung:
Sind Sie nicht die Speicherung von Objekten, weil Sie nicht zu erstellen. Dies ist eine Funktion Erklärung:
Müssen Sie
oder
Sobald Sie fix, dann ja, dies zu tun
weist der Wert
appleJuice
zu einem bereits vorhandenen Objekttype[0]
. Es ist das gleiche wie zu sagen,Für einen einfachen array, der einzige Weg ist, um eine Initialisierungs-Liste, denn wenn er einmal initialisiert ist, alles, was Sie tun können, ist zu ändern Sie die vorhandenen Elemente. So
Alternative ist die Konstruktion eines
std::vector<dispenserType>
undemplace_back
Elemente in es.