Schnelle objektorientierte, kompilierende Programmiersprache.
-
canlot
- Beiträge: 393
- Registriert: Di Mär 08, 2011 11:01 pm
- Wohnort: NRW
Beitrag
von canlot » Mo Mai 28, 2012 7:41 pm
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???
Unwissenheit ist ein Segen
-
cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Beitrag
von cloidnerux » Mo Mai 28, 2012 7:54 pm
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"
Redundanz macht wiederholen unnötig.
quod erat expectandum
-
canlot
- Beiträge: 393
- Registriert: Di Mär 08, 2011 11:01 pm
- Wohnort: NRW
Beitrag
von canlot » Mo Mai 28, 2012 8:16 pm
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();
}
Unwissenheit ist ein Segen
-
cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Beitrag
von cloidnerux » Mo Mai 28, 2012 9:34 pm
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
-
canlot
- Beiträge: 393
- Registriert: Di Mär 08, 2011 11:01 pm
- Wohnort: NRW
Beitrag
von canlot » Mo Mai 28, 2012 9:42 pm
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.
Beispiel wie??

Unwissenheit ist ein Segen
-
cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Beitrag
von cloidnerux » Mo Mai 28, 2012 9:45 pm
Code: Alles auswählen
vector<&classA> classes();
for(int i = 0; i < 10; i++)
{
classes_push_back(new classA());
}
So in etwa und es ist wrsl noch falsch, weil seit längeren kein C++ mehr Programmiert habe.
Redundanz macht wiederholen unnötig.
quod erat expectandum
-
nufan
- Wiki-Moderator
- Beiträge: 2558
- Registriert: Sa Jul 05, 2008 3:21 pm
Beitrag
von nufan » Mo Mai 28, 2012 10:10 pm
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.
Du bist nah dran ^^
"new" gibt dir nämlich einen Zeiger auf das Objekt zurück. Jetzt musst du deine Zeiger aber noch speichern, sonst hast du keinen Zugriff auf die Objekte. Dafür kannst du entweder ein einfaches Array (klasse *objects[100]) oder einen Container wie einen Vektor (std::vector<klasse *> v;) verwenden.
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;
}
-
canlot
- Beiträge: 393
- Registriert: Di Mär 08, 2011 11:01 pm
- Wohnort: NRW
Beitrag
von canlot » Mo Mai 28, 2012 10:28 pm
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.
Unwissenheit ist ein Segen
-
nufan
- Wiki-Moderator
- Beiträge: 2558
- Registriert: Sa Jul 05, 2008 3:21 pm
Beitrag
von nufan » Mo Mai 28, 2012 10:36 pm
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.
Natürlich kannst du ^^ Die Verwaltung wird dir mit Vektoren aber leichter fallen.
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;
-
canlot
- Beiträge: 393
- Registriert: Di Mär 08, 2011 11:01 pm
- Wohnort: NRW
Beitrag
von canlot » Mo Mai 28, 2012 10:57 pm
OK Danke ^^
Unwissenheit ist ein Segen