Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
void CGame::CheckFinish(bool *p_bCancelPause) { ... //Geschichte Rendern if(m_Level == 5) { RenderStorry(2); } ... } void CGame::RenderStorry(const int &ID_Storry) { ... CSprite *pSpriteIntro_Text = new CSprite; pSpriteIntro_Text = LoadStorry(ID_Storry); //Storry Datei laden //pSpriteIntro_Text -> Load("Data/Emphasis/Storry/Storry_2.Emphasis"); //So würde es funktionieren (statt der oberen zeile) pSpriteIntro_Text -> SetColourKey(205,179,139); //Hier bekomme ich die Zugriffsverletztung ... } CSprite * CGame::LoadStorry(const int &ID_Storry) { CSprite TempSprite; //Temporäres CSprite für den Text if(ID_Storry == 1) TempSprite.Load("Data/Emphasis/Storry/Storry_1.Emphasis"); else if(ID_Storry == 2) TempSprite.Load("Data/Emphasis/Storry/Storry_2.Emphasis"); return &TempSprite; } |
//pSpriteIntro_Text -> Load("Data/Emphasis/Storry/Storry_2.Emphasis"); //So würde es funktionieren (statt der oberen zeile)
Zitat von »Ombalat«
//pSpriteIntro_Text -> Load("Data/Emphasis/Storry/Storry_2.Emphasis"); //So würde es funktionieren (statt der oberen zeile)
Warum machst du es dann nicht so?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
Sprite.hpp: public: CSprite(); void Load(const string sFilename); void operator = (CSprite *rhs); //Überladen des = Operators private: SDL_Surface *m_pImage; // Das Surface für das Bild, in dem sich das zu rendernde Bild befindet string sPath; //Der Pfad, wo die Bilddatei liegt string GetPath() { return (sPath); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
CSprite.cpp: CSprite::CSprite() { m_pImage = NULL; m_pScreen = g_pFramework -> GetSurface(); } //Load - Funktion. //Ermöglicht das Laden eines nicht animierten Sprites void CSprite::Load(const string sFilename) { m_pImage = SDL_LoadBMP(sFilename.c_str()); //BMP laden sPath = sFilename; //Fehlerabfrage if (m_pImage == NULL) { cout << "Fehler beim Laden von: " << sFilename.c_str() << endl; cout << "Fehlermeldung: " << SDL_GetError() << endl; //Framework herunterfahren g_pFramework -> Quit(); //Gesammtes Programm herunterfahren exit(1); } //Rect initialisieren m_Rect.x = 0; //X - Pos für die linke obere Ecke im Rect m_Rect.y = 0; //Y - Pos für die linke obere Ecke im Rect m_Rect.w = m_pImage -> w; //Breite des Rect m_Rect.h = m_pImage -> h; //Höhe des Rect } void CSprite::operator =(CSprite *rhs) { if(m_pImage != NULL) { SDL_FreeSurface(m_pImage); //m_pImage = new SDL_Surface; } Load(rhs -> GetPath()); } |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Ombalat« (27.08.2010, 16:51)
C-/C++-Quelltext |
|
1 |
m_pImage = new SDL_Surface |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
// Deklaration public: CSprite& operator = (const CSprite& Src); // Implementation CSprite& CSprite::operator = (const CSprite& Src) { // Hier dein Code... return *this; // Referenz auf sich selbst zurückgeben } |
C-/C++-Quelltext |
|
1 2 |
c:\dokumente und einstellungen\johannes\eigene dateien\spieleprogrammierung\projekte\way light\way light\sprite.cpp(114) : error C2662: 'CSprite::GetPath': this-Zeiger kann nicht von 'const CSprite' in 'CSprite &' konvertiert werden Durch die Konvertierung gehen Qualifizierer verloren |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
Sprite.hpp: public: CSprite(); void Load(const string sFilename); CSprite &operator = (const CSprite& rhs); //Überladen des = Operators private: SDL_Surface *m_pImage; // Das Surface für das Bild, in dem sich das zu rendernde Bild befindet string sPath; //Der Pfad, wo die Bilddatei liegt string GetPath() { return (sPath); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
Sprite.cpp: CSprite::CSprite() { m_pImage = NULL; m_pScreen = g_pFramework -> GetSurface(); } //Load - Funktion. //Ermöglicht das Laden eines nicht animierten Sprites void CSprite::Load(const string sFilename) { m_pImage = SDL_LoadBMP(sFilename.c_str()); //BMP laden sPath = sFilename; //Fehlerabfrage if (m_pImage == NULL) { cout << "Fehler beim Laden von: " << sFilename.c_str() << endl; cout << "Fehlermeldung: " << SDL_GetError() << endl; //Framework herunterfahren g_pFramework -> Quit(); //Gesammtes Programm herunterfahren exit(1); } //Rect initialisieren m_Rect.x = 0; //X - Pos für die linke obere Ecke im Rect m_Rect.y = 0; //Y - Pos für die linke obere Ecke im Rect m_Rect.w = m_pImage -> w; //Breite des Rect m_Rect.h = m_pImage -> h; //Höhe des Rect } CSprite& CSprite::operator =(const CSprite& rhs) { if(m_pImage != NULL) { SDL_FreeSurface(m_pImage); //m_pImage = new SDL_Surface; } Load(rhs.GetPath()); return *this; } |
Werbeanzeige