Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
BenHei Mini JLI'ler
Anmeldedatum: 27.10.2005 Beiträge: 6
Medaillen: Keine
|
Verfasst am: 08.02.2006, 17:24 Titel: "Klasseninstanzen Array" |
|
|
Erstma hallo an alle JLI'er
Bin neu hier, und man ahnt es kaum, ein Problem veranlasst mich diesen Thread zu eröffnen
Ich habe die Sprite Klasse aus dem Buch.
Nun möchte hingehen und dynamisch davon n Instanzen erstellen:
Sprite *Bild = new Sprite[n];
das klappt soweit ja auch.
Aber wenn ich später Bild[x].Create(...) aufrufen kommt es zu einem Zugriffsfehler.
(Den -> Operator nimmt er nicht an, obwohl der ja eigentlich recht wär).
Denke ich da grad vollkommen an C++ vorbei oder gibt es einen Weg der mir das ganze ermöglicht?
Freue mich auf jede Hilfreiche Antwort
Gruß
Benny |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 08.02.2006, 17:53 Titel: |
|
|
sollte eigentlich funktionieren. Das einzige was ihc mir vorstellen köntne, ist das x vielelicht zu groß ist, oder n nicht gesetzt wurde oder du [x].Create aufrufst bevor du new aufrufst. Vielleicht soltlest du mal den code im zusammenhang posten. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 08.02.2006, 18:05 Titel: |
|
|
Hi!
Der "." Operator ist hier vollkommen richtig. Falsch wäre der "->" Operator. Also, einen Fehler sehe ich allerdings auch nicht. Höchstens o.g. Möglichkeiten oder aber das der Fehler in Create auftritt.
Diese Möglichkeiten kannst du aber per Debugging ganz leicht ausschließen.
grüße |
|
Nach oben |
|
|
BenHei Mini JLI'ler
Anmeldedatum: 27.10.2005 Beiträge: 6
Medaillen: Keine
|
Verfasst am: 08.02.2006, 18:12 Titel: |
|
|
Ich versuchs grad nochmal.
Wenns dann net klappt poste ich den Code.
Wie ist das eigentlich wenn die Klasse nen Kostruktor mit Argumenten hat?
Wie übergeb ich die dann?
Sprite *Bild = new Sprite[20](lpDevice, lpTextureFileName...)
das geht ja net
EDIT:
Man glaubt es kaum, es geht lol
naja grad umsonst der ganze stress hier
Danke euch beiden
Zuletzt bearbeitet von BenHei am 08.02.2006, 18:17, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 08.02.2006, 18:16 Titel: |
|
|
es ist unmöglich ein Array einer Klasse zu erstellen, dessen Konstruktor Parameter benötigt. Du kannst ein Array mit Zeigern auf die Objekte machen (gar nicht so dumm, Zeiger zu speichern, auch bei stl mach ich das oft) und dann in einer Schleife in jedes Feld ein entsprechendes Objekt initialisieren. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 08.02.2006, 18:44 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | es ist unmöglich ein Array einer Klasse zu erstellen, dessen Konstruktor Parameter benötigt. |
Das sehe ich anders
CPP: | Klasse instanzen[3] = {Klasse(23), Klasse(23, "überladen"), Klasse(3,2,5)}; |
so in etwa sollte das Funktionieren ^^ _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 08.02.2006, 18:52 Titel: |
|
|
ich bin mir zwar net sicher ob das geht, aber auf jedne Fall geht es nicht wenn du new benutzt. Besonders net wenn die Anzahl der Elemente variabel ist... _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 08.02.2006, 19:06 Titel: |
|
|
ne andere Möglichkeit wäre, die allgemeinen Initialisierungen(wenn vorhanden) im Konstruktor zu machen und seperat eine Funktion Init() zu erstellen. Dann könntest du die in ner schleife initialisieren. |
|
Nach oben |
|
|
BenHei Mini JLI'ler
Anmeldedatum: 27.10.2005 Beiträge: 6
Medaillen: Keine
|
Verfasst am: 08.02.2006, 19:39 Titel: |
|
|
Genauso mach ichs jetzt auch |
|
Nach oben |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 08.02.2006, 19:57 Titel: |
|
|
Hi!
Dragon hat Folgendes geschrieben: | Jonathan_Klein hat Folgendes geschrieben: | es ist unmöglich ein Array einer Klasse zu erstellen, dessen Konstruktor Parameter benötigt. |
Das sehe ich anders
CPP: | Klasse instanzen[3] = {Klasse(23), Klasse(23, "überladen"), Klasse(3,2,5)}; |
so in etwa sollte das Funktionieren ^^ |
Hier ging es um dynamischen Speicher. Also Objekte auf dem Heap. Und da gibt es keine Möglichkeit überladene Construktoren zu verwenden.
grüße |
|
Nach oben |
|
|
|