Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Konstruktor - program nie uruchamia się

Ostatnio zmodyfikowano 2014-12-27 12:36
Autor Wiadomość
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.


C/C++
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 );
   
   
};

C/C++
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:

C/C++
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;
}

C/C++
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
P-123347
Monika90
» 2014-12-26 13:36:48
C/C++
for( int i = 0; i <= 7; i++ )
     Act[ i ] = false;

W tej pętli wychodzisz poza zakres tablicy.
P-123352
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.
P-123372
« 1 »
  Strona 1 z 1