JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Stl mag mich nicht
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 14.04.2004, 23:18    Titel: Stl mag mich nicht Antworten mit Zitat

Hi Leute,

ich arbeite zur Zeit viel mit der Stl. Aber irgendwie habe ich immer folgendes Problem.

Immer wenn ich (sowohl bei Listen als auch bei Maps) die Funktion .clear oder .erase aufrufe, gibt der Debugger einen Fehler aus:

Zitat:

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)



an folgender Stelle:
Code:
   
if (pHead->pBlockHeaderNext)
{
      pHead->pBlockHeaderNext->pBlockHeaderPrev = pHead->pBlockHeaderPrev;
}


Das ganze passiert bei mir anscheinend auch nur bei Texturen. Ist das Problem bekannt, oder habe ich irgendwas falsch gemacht?

Kennt jemand die Antwort?
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 15.04.2004, 19:54    Titel: Antworten mit Zitat

Anhand von dem was du gepostet hast, kann ich leider nichts sagen.
Aber es scheint du nutzt kein STL sondern eine eigene Liste (mit den Pointer zuweisungen)
Ich bin kein Profi, aber bei STL kümmert sich glaub ich automatisch um solche Zeiger.
Wenn d alles mit new und delte machst und die Zeiger auf die Vorgänger/Nachfolger selber setzt, ist es schwieriger und fehleranfälliger.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 15.04.2004, 22:02    Titel: Antworten mit Zitat

Stimmt, ich kann hier auch nichts erkennen, was mit der STL zu tun haben könnte...

PS: Vielleicht musst du die Texturen auch vorher mit Release() freigeben, bevor du sie aus der Liste/Map/etc... löschst Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.04.2004, 00:03    Titel: Antworten mit Zitat

Ich denke was er hier gepostet hat ist Quelltext aus der STL. Kann man trotzdem nicht viel zu sagen, ohne etwas meht Code zu sehen.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 00:31    Titel: Antworten mit Zitat

Ich weiß echt nicht worans liegt:

Code:

    map<string,LPD3DXPMESH>::iterator result_m_lpMesh;
    map<string,unsigned long>::iterator result_m_nNumMaterials;
   map<string,D3DMATERIAL9*>::iterator result_m_lpMeshMaterials;
    map<string,char**>::iterator result_m_lpMeshTextures;

    // Nach dem Namen des Meshes suchen
    result_m_lpMesh = m_lpMesh.find(lpMeshName);
    result_m_nNumMaterials = m_nNumMaterials.find(lpMeshName);
    result_m_lpMeshMaterials = m_lpMeshMaterials.find(lpMeshName);
    result_m_lpMeshTextures = m_lpMeshTextures.find(lpMeshName);


Es kommt solch eine Fehlermeldung:

H:\c++\Space Arena\Ressourcen.cpp(114) : error C2228: left of '.find' must have class/struct/union type
H:\c++\Space Arena\Ressourcen.cpp(115) : error C2228: left of '.find' must have class/struct/union type
H:\c++\Space Arena\Ressourcen.cpp(116) : error C2228: left of '.find' must have class/struct/union type
H:\c++\Space Arena\Ressourcen.cpp(117) : error C2228: left of '.find' must have class/struct/union type

Woran könnte das denn liegen?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 12:20    Titel: Antworten mit Zitat

Es liegt daran das die Listen nicht gültigsind. Rufst du diese Funktionen in der Klasse auf oder außerhalb? Wenn du sie außerhalb aufrufen willst empfehle ich dir das mit Zeigern zu machen.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 12:54    Titel: Antworten mit Zitat

Welchen Typ hat "m_lpMesh", "m_nNumMaterials", "m_lpMeshMaterials" und "m_lpMeshTextures"?
Sind das zufällig Zeiger auf ein STL-Container?
Dann musst du nämlich den Zugriffsoperator für Zeiger(->) verwenden Wink
Zitat:
result_m_lpMesh = m_lpMesh->find(lpMeshName);
result_m_nNumMaterials = m_nNumMaterials->find(lpMeshName);
result_m_lpMeshMaterials = m_lpMeshMaterials->find(lpMeshName);
result_m_lpMeshTextures = m_lpMeshTextures->find(lpMeshName);

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 15:35    Titel: Antworten mit Zitat

Die Deklaration erfolgt in der Header-Datei:

Code:


        // diese Map speichert den Namen und den Zeiger auf die Textur
      map<string,LPD3DXPMESH> m_lpMesh;
        map<string,unsigned long> m_nNumMaterials;// Anzahl der Materialien
        map<string,D3DMATERIAL9*> m_lpMeshMaterials;// das Array der Materialien
        map<string,char**> m_lpMeshTextures;// das Array mit den Texturnamen



Deshalb wunder ich mich, warum das nicht geht.
So was ähnliches gabs ja auch schon in dem 2. JLI-buch:

Code:

         // diese Map speichert den Namen und den Zeiger auf die Textur
        map<string,LPDIRECT3DTEXTURE9> m_MapTextures;

und
Code:

     // Iterator für die Suche in der Map
   map<string,LPDIRECT3DTEXTURE9>::iterator result;

    // Nach dem Namen der Textur suchen
    result = m_MapTextures.find(lpTextureName);
        // diese Map speichert den Namen und den Zeiger auf die Textur



Das mit "->" funktioniert übrigens auch nicht.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 17:10    Titel: Antworten mit Zitat

Code:
using namespace std;


hast du drin, oder?
_________________
StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 18:28    Titel: Antworten mit Zitat

Das ist auf jedenfall drin, sonst gäbe es noch vielmehr Compilerfehler.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 18:58    Titel: Antworten mit Zitat

Ok, ok. Ich hab den Fehler selbst gefunden. Der Fehler lag in einem Konflikt von Dateinamen.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 19:24    Titel: Antworten mit Zitat

Neues Problem:

Wie löscht man Elemente aus einer Map?

Bei Listen sah das ja in etwa so aus:
Code:

   for(it=m_ShotsList.begin();it!=m_ShotsList.end();it++)
    {
        delete (*it);
    }


Bei Maps klappts so jedenfalls nicht. Wie gehts dann?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 29.08.2004, 20:55    Titel: Antworten mit Zitat

LeeDiGer hat Folgendes geschrieben:
Wie löscht man Elemente aus einer Map?
[...]
Bei Maps klappts so jedenfalls nicht. Wie gehts dann?

Vielleicht liegts daran, dass die Funktion erase() heißt Wink
Jedenfalls sollte es funktionieren, wenn du das so machst:
Code:
map<int,int> mymap;

mymap.erase(*it);


Mit delete kannst du nur Objekte entfernen, die du per new erstellt hast Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.08.2004, 00:40    Titel: Antworten mit Zitat

Hmm, klappt irgendwie nicht. Es kommt solch eine Fehlermeldung:

error C2664: 'class std::_Tree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::all
ocator<char> > const ,struct _D3DMATERIAL9 *>,struct std::map<class
.....

Den Rest erpar ich dir. Jedenfalls wars ein netter Vorschlag.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.08.2004, 11:53    Titel: Antworten mit Zitat

Zeig doch mal den Lösch-Code und die Zeile, in der der Fehler auftritt Wink
Dann können wir schon mehr sagen...
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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