Jeg sitter nå og prøver å komme inn i C++ igjen, etter en periode med Python. Og det ser ut som jeg sliter litt med pekere og lister. Jeg vet jeg hadde litt prolemer med dette før, så prøver å bli bedre på dette.
Kildekode: http://etse001.pastebin.com
Jeg har laget en liste som jeg følte virket helt fint. Det gikk fint å legge til elementer og så hente de ut igjen. Men når jeg sletter 1 eller fler elementer oppstår det et merkelig problem. I koden min generer jeg 3 elementer som legges til i listen så sletter jeg det andre elementet. Det som da skjer er at det første elementet funerer helt fint, men når den prøver seg med det 3. elemente som får jeg opp en feilmelding over at pekeren "img" ikke fungerer.
Debuggeren henviser meg da til objects.cpp fila, hvor den på linje klager på følgende:
her ser jeg at pekeren peker på en Image klasse, men alle variabelene i klassen står med "Expression cannot be evaluated".
Hvis jeg lar være å slette noen elementer fungerer alle 3 elementene som ligger i lista. Så det å slette et element ødelegger for de andre. Sletter jeg det første elementet i listen skjer det samme igjen. Men om jeg sletter det siste elementet i listen fungerer alt tilsynelatende greit, til jeg avslutter programmet - da får jeg en "debug assertion error".
Hvor den klager på at linje 76. i list.cpp
Jeg blir mege taknemmelig om noen kunne se over og hjelpe meg
Kildekode: http://etse001.pastebin.com
Jeg har laget en liste som jeg følte virket helt fint. Det gikk fint å legge til elementer og så hente de ut igjen. Men når jeg sletter 1 eller fler elementer oppstår det et merkelig problem. I koden min generer jeg 3 elementer som legges til i listen så sletter jeg det andre elementet. Det som da skjer er at det første elementet funerer helt fint, men når den prøver seg med det 3. elemente som får jeg opp en feilmelding over at pekeren "img" ikke fungerer.
Unhandled exception at 0x0089c586 in space battle.exe: 0xC0000005: Access violation reading location 0xabababc7.
Vis hele sitatet...
Kode
76. sf::Sprite sprite(*img);
Hvis jeg lar være å slette noen elementer fungerer alle 3 elementene som ligger i lista. Så det å slette et element ødelegger for de andre. Sletter jeg det første elementet i listen skjer det samme igjen. Men om jeg sletter det siste elementet i listen fungerer alt tilsynelatende greit, til jeg avslutter programmet - da får jeg en "debug assertion error".
Hvor den klager på at linje 76. i list.cpp
Kode
delete curr; // delete current