Probleme beim debuggen
-
Nein der ist nicht gut
CSprite::CSprite(const CSprite& rhs) { m_pImage = new SDL_Surface; m_pImage = rhs.m_pImage; ..... }du erzeugst erst mal eine neue SDL_Surface und mit der nächsten Istruktion überschreibst du sie schon wieder --> Speicherleck
Kurt
-
Hallo
Dann kapiere ich einfach nicht, wie das gehen soll. Kann mir mal jemand einen Anstoss geben.
chrische
-
Hallo
Es weiß doch bestimmt einer von Euch, wie der korrekte Copyconstructor aussehen muss.
chrische
-
Nö.
-
chrische5 schrieb:
Es weiß doch bestimmt einer von Euch, wie der korrekte Copyconstructor aussehen muss.
Kommt ganz drauf an was SDL_Surface ist
Wahrscheinlich so wenn SDL_Surface einen Copyconstructor hat.CSprite::CSprite(const CSprite& rhs) { m_pImage = new SDL_Surface(*rhs.m_pImage); ..... }das könnte eventuell auch funktionieren wenn z.B. SDL_Surface nur ein typedef für ein char array ist
CSprite::CSprite(const CSprite& rhs) { m_pImage = new SDL_Surface; memcpy(m_pImage, rhs.m_pImage , sizeof(SDL_Surface)); ..... }Langer Rede kurzer Sinn: keiner kann dir sagen wie dein copyconstructor aussehen muss wenn du uns nicht sagst woraus genau dein CSprite besteht.
Kurt
-
Hallo
Erstmal dank für deine Antwort. Dieses Thema ist halt noch neu für mich. Den kompletten Code der Klasse steht doch schon im Forum nur ein paar Post weiter oben (früher). Brauchst du noch mehr Information?
chrische
-
chrische5 schrieb:
Erstmal dank für deine Antwort. Dieses Thema ist halt noch neu für mich. Den kompletten Code der Klasse steht doch schon im Forum nur ein paar Post weiter oben (früher). Brauchst du noch mehr Information?
In deinem Fall geht's nicht um deinen Code. Es geht darum wie das ganze Framework funktioniert mit dem du da arbeitest. Wer das nicht kennt kann dir auch keine allgemeine Antwort geben wie man daraus eigene Klassen ableitet.
Kurt
-
Hallo
Danke für deine Hilfe. Ich werde jetzt mal versuchen deine Anregungen umzusetzten.
chrische