Dynamisch im laufe eines Programms ein Objekt erstellen.
Dynamisch im laufe eines Programms ein Objekt erstellen.
Ich arbeite hier grade das C++ Tutorial durch. Mein Feedback an Xin Soweit gut vielleicht etwas weniger Fachchinesisch und mehr Grundlagen und Funktionen der Basiclibrary wie String e.t.c .
Zur Testzwecken will ich mehrere einfache Objekte im Laufe des Programmes dynamisch erstellen genauso wie Zeiger halt. Nur wie macht man das mit Objekten???
Zur Testzwecken will ich mehrere einfache Objekte im Laufe des Programmes dynamisch erstellen genauso wie Zeiger halt. Nur wie macht man das mit Objekten???
Unwissenheit ist ein Segen
- cloidnerux
- Moderator
- Beiträge: 3123
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Mich wundert das du zwar Objektorientierung lernst, aber nicht da Dynamische anlegen von Objekten.
So als hinweis, such mal nach dem Operator "new" und "delete"
So als hinweis, such mal nach dem Operator "new" und "delete"
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Ich glaube du hast mich nicht verstanden ich kenne new und delete. nur wie lege ich 10,20,30 solche Objekte an.
z.B.
while(i<10)
{
klasse bla = new klasse();
}
z.B.
while(i<10)
{
klasse bla = new klasse();
}
Unwissenheit ist ein Segen
- cloidnerux
- Moderator
- Beiträge: 3123
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Mit ne wund delete legst du neue Klassen an, erhälst aber einen Klassenpointer, weswegen dein Code so nicht funktionierend dürfte. Wenn du weiterhin Zugriff auf die Objekte haben willst, musst du zusehen, das du dir jede einzelne Referenz speicherst, z.B in einer Liste.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Beispiel wie??cloidnerux hat geschrieben:Mit ne wund delete legst du neue Klassen an, erhälst aber einen Klassenpointer, weswegen dein Code so nicht funktionierend dürfte. Wenn du weiterhin Zugriff auf die Objekte haben willst, musst du zusehen, das du dir jede einzelne Referenz speicherst, z.B in einer Liste.
Unwissenheit ist ein Segen
- cloidnerux
- Moderator
- Beiträge: 3123
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Code: Alles auswählen
vector<&classA> classes();
for(int i = 0; i < 10; i++)
{
classes_push_back(new classA());
}
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Du bist nah dran ^^canlot hat geschrieben:Ich glaube du hast mich nicht verstanden ich kenne new und delete. nur wie lege ich 10,20,30 solche Objekte an.
z.B.Code: Alles auswählen
while(i<10) { klasse bla = new klasse(); }
Code: Alles auswählen
klasse *bla = new klasse();
Hier ein kurzes Beispiel für die Verwendung eines Vektors:
Code: Alles auswählen
#include <vector>
int main()
{
// Vektor anlegen
std::vector<klasse *> v;
// 10 Zeiger auf Objekte in den Vektor einfügen
for( int i = 0; i < 10; i++ )
v.push_back( new klasse( i ) );
// Alle Objekte aus dem Vektor entfernen und Speicher freigeben
while( v.size() > 0 )
delete v.pop_back();
return 0;
}
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Danke.
Kann ich auch als anfänger die Adressen in ein einfaches dynamisches Array speichern??
int *objekte = malloc(10*sizeof(int));
und dann jeweils mit realloc erweitern oder geht das mit Vektoren leichter aber ich kenne mich da leider nicht aus weil ich noch anfänger bin.
Kann ich auch als anfänger die Adressen in ein einfaches dynamisches Array speichern??
int *objekte = malloc(10*sizeof(int));
und dann jeweils mit realloc erweitern oder geht das mit Vektoren leichter aber ich kenne mich da leider nicht aus weil ich noch anfänger bin.
Unwissenheit ist ein Segen
Re: Dynamisch im laufe eines Programms ein Objekt erstellen.
Natürlich kannst du ^^ Die Verwaltung wird dir mit Vektoren aber leichter fallen.canlot hat geschrieben:Kann ich auch als anfänger die Adressen in ein einfaches dynamisches Array speichern??
int *objekte = malloc(10*sizeof(int));
und dann jeweils mit realloc erweitern oder geht das mit Vektoren leichter aber ich kenne mich da leider nicht aus weil ich noch anfänger bin.
Mit Arrays würde das so aussehen:
Code: Alles auswählen
klasse **array;
// Array aus 100 Zeigern anlegen
array = new klasse *[100];
// Objekte anlegen und in das Array einfügen
for( int i = 0; i < 100; i++ )
array[i] = new klasse( i );
// Objekte verwenden
array[index].funktion();
// Speicher für Objekte freigeben
for( int i = 0; i < 100; i++ )
delete array[i];
// Speicher für Array freigeben
delete[] array;