[C++]Konstruktor - program nie uruchamia się
Ostatnio zmodyfikowano 2014-12-27 12:36
PajacRoku Temat założony przez niniejszego użytkownika |
[C++]Konstruktor - program nie uruchamia się » 2014-12-26 13:01:14 Witam serdecznie, Tworzę gierkę z użyciem biblioteki SDL. Śmigało wszystko jak należy, klasa z bohaterem(tzn. samolotem) działała jednak bez konstruktora(tzn. z konstruktorem domyślnym, bo i tak kompilator tworzy konstruktor). Dodałem go do klasy, program się skompilował, ale już się nie uruchamił. Zastanawiam się więc, gdzie jest błąd. class ludek { float predkosc; int acc; bool Act[ 7 ]; pocisk bullet[ 7 ]; float x; float y; SDL_Surface * image = NULL; SDL_Event event; SDL_Rect position; SDL_Rect scale; SDL_Surface * load_image( std::string filename ); public: ludek( float p, int a ); void blit( SDL_Surface * ekran ); void zaladuj(); void ruch( Uint8 * keystate ); void free(); void colorkey(); SDL_Rect scReturn(); SDL_Rect posReturn(); bool * actReturn(); void actChange( int ); void shoot( SDL_Surface * ekran ); }; ludek::ludek( float p, int a ) { this->predkosc = p; this->acc = a; this->zaladuj(); this->colorkey(); for( int i = 0; i <= 7; i++ ) Act[ i ] = false; } I metody użyte w konstruktorze: void ludek::zaladuj() { image = load_image( "hello.png" ); position.y = 768 - 32; position.x = 1; scale.x = 0; scale.y = 0; scale.h = 32; scale.w = 32; } void ludek::colorkey() { Uint32 colorkey = SDL_MapRGB( image->format, 255, 0, 255 ); SDL_SetColorKey( image, SDL_SRCCOLORKEY, colorkey ); }
I wywołanie konstruktora: ludek ja( 5, 7 ); Ogółem wygląda to tak, że jeśli konstruktor zostawię pusty, wartości pól ustalę poza nim i użyję powyższych metod w innym miejscu, to program się uruchomi i działa tak jak bym chciał, żeby działał, ale gdy go dodam, to program się kompiluje, ale nie uruchamia. Oczywiście można powiedzieć "skoro działa bez konstruktora, to z niego nie korzystaj", niestety to jest na projekt i wymagane jest, żeby klasy miały konstruktory. Uruchamianie programu poprzez .exeka też nic nie daje. Moje środowisko programistyczne to Code::Blocks 13.12 |
|
Monika90 |
» 2014-12-26 13:36:48 for( int i = 0; i <= 7; i++ ) Act[ i ] = false;
|
W tej pętli wychodzisz poza zakres tablicy. |
|
PajacRoku Temat założony przez niniejszego użytkownika |
» 2014-12-27 12:36:13 Faktycznie tu jest błąd, ale problem wynikał nie z tego. Po prostu wywołałem konstruktor nie w tym miejscu co trzeba -.-' Dzięki wielkie za pomoc, temat do zamknięcia. |
|
« 1 » |