Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Rätselhafter (Anfänger?) Fehler

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.07.2008, 14:05 Uhr
~Guest007
Gast


Bin noch nicht so lange bei C++ dabei und stoße jetzt auf folgenden mir unerklärlichen Fehler:
Sobald ich in meiner main Klasse per setGamestate() die "state" Integervariable verändere, werde ich rausgeworfen mit folgendem Fehler:
Code:
Unhandled exception at 0x00412dd6 in SDLGame.exe: 0xC0000005: Access violation reading location 0xcccccccc.



Und in der "state" Variable steht zum break drinnen:

Code:
state CXX0030: Error: expression cannot be evaluated    




Aufruf in der main Klasse:

C++:
Gamestate status;
if( event.key.keysym.sym == SDLK_RETURN )
                    {
                        
                        status.setGamestate(1);
                        cout << status.getGamestate(); //hier wird korrekt der veränderte Wert (=1) ausgegeben

                        
                    }


Hier mein Header:

C++:
class Gamestate{
public:
    unsigned int state;
public:
    Gamestate();
    void setGamestate(const unsigned int gamestate);
    int getGamestate();
    static const int gamestates=2;

    //0 = Startbildschirm, 1=Spiel


};

Hier meine Klasse:

C++:
#include "Gamestate.h"
#include "SDL.h"
Gamestate::Gamestate(){
    this->state=0;
}
int Gamestate::getGamestate(){
    return this->state;
}
void Gamestate::setGamestate(const unsigned int gamestate){
    if (gamestates >gamestate){
        this->state=gamestate;
        
    }
}



Dabei ist auch seltsam dass kein Fehler auftritt wenn ich mit dem Debugger drüberlaufe (F10)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.07.2008, 14:53 Uhr
xXx
Devil


Hmm denk nicht dass das der Fehler ist, aber nja ... also aber was du ändern solltest (vllt.)

C++:
class state
{
    enum value_t
    {
        S_SPLASH = 0,
        S_GAME = 1
    } m_value;
    static const unsigned int m_count;

public:
    state(value_t const& value)
        : m_value(value)
    { if (value > state::m_count) throw std::invalid_argument("invalid enum value"); }

public:
    value_t const& get() const { return m_value; }
    void set(value_t const& value) {  if (value > state::m_count) throw std::invalid_argument("invalid enum value"); m_value = value; }
};

const unsigned int state::m_count(2);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.07.2008, 23:20 Uhr
0xdeadbeef
Gott
(Operator)



Zitat:

0xcccccccc


ist in MSVC-Debug-Code ein uninitialisierter Zeiger. Sofern du mir im obrigen Code keine Zeiger verschweigst, liegt der Fehler nicht darin, sondern an anderer Stelle - irgendwo deklarierst du einen Zeiger und greifst darauf zu, bevor du ihm etwas zugewiesen hast.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: