JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=d17dc6abc589028b83e0e7124025a69eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Programm stürzt beim Aufruf new ab...

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 12:41    Titel: Programm stürzt beim Aufruf new ab... Antworten mit Zitat

Hi!

Ich wollte mal Waffen in meinem Spiel einbauen. Dazu hab ich in der Playerklasse eine Funktion AddWeapon geschrieben, in der folgendes steht.

Code:

Weapon *pWeapons = new Weapon;

   pWeapons->Create();
   pWeapons->SetWeaponData(data);
   pWeapons->SetOffset(10,-10);
   pWeapons->AddAnimation(Animation_name,ImageFilename,image_type,count,FrameTime,special);

   WeaponTyp.push_back(*pWeapons);


Weapon ist eine Klasse, selbst wenn ich alles auskommentiere und nur noch
Code:
Weapon *pWeapons = new Weapon;
stehen habe, stürzt das Programm ab. (auch wenn ich gleich danach ein delete pWeapons; Befehl setze.

wenn ich aber in der Playerklasse unter private: ein Weapon Weapon1; deklariere und danach die AddWeapon Funktion so umschreibe:
Code:

Weapon *pWeapons = &Weapon1;

   pWeapons->Create();
   pWeapons->SetWeaponData(data);
   pWeapons->SetOffset(10,-10);
   pWeapons->AddAnimation(Animation_name,ImageFilename,image_type,count,FrameTime,special);

   WeaponTyp.push_back(*pWeapons);


also den Zeiger jetzt nur noch auf Weapon1 setzen und nicht extra einen neuen Speicher reserviere, funktioniert alles wunderbar. Woran kann das liegen? Genug Speicher schein ich ja zu haben. Wenn ich den Taskmanager aufrufe hab ich noch ~450MB frei.
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 12:56    Titel: Antworten mit Zitat

Poste mal den Code vom Konstruktor...
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 13:15    Titel: Antworten mit Zitat

Da werden nur paar Variablen mit Werten ausgestattet...
Code:

   Weapon_inited = false;

      // Kollision
      Weapon_Radius_X = 0;
      Weapon_Radius_Y = 0;

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 13:29    Titel: Antworten mit Zitat

Code:

WeaponTyp.push_back(*pWeapons);


Diese Zeile leuchtet mir nicht ganz ein. Du erstellst ein Weapon-Objekt auf dem Heap und danach erstellst du eine Kopie davon, ohne es hinterher zu löschen. Nagut... hast du denn auch einen Kopierkonstruktor und den =-Operator überladen? Das sind Voraussetzungen für STL-Kompatible Objekte.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 14:09    Titel: Antworten mit Zitat

Ich habe doch oben in meinem ersten Beitrag geschrieben, selbst wenn ich alles auskommentiere, also wenn nur noch
Code:
Weapon *pWeapons = new Weapon;

da steht, stürzt das Programm gleich ab. Das ist ja das, was mich wundert...Deshalb hat das ja in erster Linie nicht viel zu sagen...
Wenn ich die Anweisung("Weapon *pWeapons = new Weapon;") aber in der main.cpp ausführe funktioniert es, aber wenn ich in der PlayerKlasse in der Funktion AddWeapon das so schreibe nicht.
Code:

void Player::AddWeapon(void)
{
Weapon *pWeapons = new Weapon;
}

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 14:14    Titel: Antworten mit Zitat

Vielleicht liegt es ja daran, wie du mit den Container umgehst.. kommentier auch mal alle Zeilen aus, in denen du auf den Container zugreifst.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 14:54    Titel: Antworten mit Zitat

Hallo Hazel?

Das hier klappt ja:
Code:

Weapon *pWeapons = &Weapon1;

   pWeapons->Create();
   pWeapons->SetWeaponData(data);
   pWeapons->SetOffset(10,-10);
   pWeapons->AddAnimation(Animation_name,ImageFilename,image_type,count,FrameTime,special);

   WeaponTyp.push_back(*pWeapons);


deshalb kann es ja nicht am COntainer liegen, oder?
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 15:09    Titel: Antworten mit Zitat

Es liegt natürlich nicht am Container sondern an dir. Bei deiner zweiten "Lösung" erstellst du eine Kopie von Weapon1, und zwar in dieser Zeile(zum Zweiten...):

Code:

WeaponTyp.push_back(*pWeapons);


Vielleicht solltest du Zeiger auf die Weapons speichern anstatt Weapons, dann hast du den ganzen Kopierärger nicht.
Ich wüsste nicht woran es sonst liegen könnte, tut mir leid.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 15:56    Titel: Antworten mit Zitat

hm, ziemlich komischer fehler.
Hatte ich auch mal so in der Art.
Prüf mal den this Pointer und ähnliches.

Bei meinem Projekt habe ich den Fehler nie gefunden.
Aber ich denke dass er mit den char-pointer zu tun hatte.
Damals hatte ich nämlich noch nicht std::string benutzt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 20:21    Titel: Antworten mit Zitat

Vielen vielen Dank Hazel!!! Very Happy

Hat geklappt mit dem vector<..> zeug. Weiß zwar nicht genau warum, weil ich ja auch mal nur die zeile blabla var = new blabla; geschrieben hatte. Aber Hauptsache es funktioniert jetzt! Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.08.2003, 20:49    Titel: Antworten mit Zitat

Jo kein Problem... würd mich aber trotzdem brennend interessieren woran's lag. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.08.2003, 07:55    Titel: Antworten mit Zitat

naja ich hab ja jetzt nur statt
Code:
vector<Weapon> WeaponTyp;

das hier geschrieben
Code:
vector<Weapon*> WeaponTyp;


und dann statt
Code:
WeaponTyp.push_back(*pWeapons);
das
Code:
WeaponTyp.push_back(pWeapons);


Mich wundert es nur, dass das geklappt hat, weil ich das ja auch mal ganz ohne diesen vector ausgeführt habe...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 18.08.2003, 08:09    Titel: Antworten mit Zitat

Hmm ich hatte auch schon ein paar komische Fehler mit der STL die bei VC++ dabei war. Mit dem STLPort hab ich allerdings keine Probleme.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum