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

Dziwna sprawa - gdy w klasie nie zadeklaruję zmiennej to program się wysypuje

Ostatnio zmodyfikowano 2013-08-06 19:19
Autor Wiadomość
czosnek17
Temat założony przez niniejszego użytkownika
Dziwna sprawa - gdy w klasie nie zadeklaruję zmiennej to program się wysypuje
» 2013-08-05 22:45:52
Mam klasę bomby. Zauważyłem, że jest tam obiekt typu sf::Vector2f (SFML 2), którego nie używam - usunąłem go. Przy następnej kompilacji po postawieniu bomby pojawia się okienko "wystąpił problem z aplikacją...". Więc zadeklarowałem ponownie ten obiekt i wszystko działa. Usunąłem go, przestało działać, dałem Vector2i - działa. To też usunąłem, wstawiłem jedną zmienną int - nie działa, wstawiłem 2 - działa. Może dlatego, że Vector2 zajmuje tyle co 2 int.

Co to jest? D:
P-89568
MrPoxipol
» 2013-08-05 23:05:47
Bez kodu może być problem z wyjaśnieniem.
P-89569
czosnek17
Temat założony przez niniejszego użytkownika
» 2013-08-05 23:19:34
Jest to plik .hpp:
C/C++
#ifndef bomba_hpp
#define bomba_hpp
#include "definicje.hpp"
class bomba
{
public:
    static sf::Texture textura[ 5 ];
    static sf::Texture textwyb;
    sf::Sprite spr;
    int zasieg;
    int nrb;
    sf::Clock zegar;
    sf::Clock zegar2;
   
    static float czas;
    static float czas2;
    bool czy_post;
    bool czy_liczwyb;
    bool czy_liczwyb2;
    int tryb;
    bool czy_mp;
    sf::Vector2i ucbmb;
    bool warunek;
    int nr_bomby;
    int numgr;
   
    bool czy_prz;
    int kierunek;
   
    sf::Vector2f ostpol;
    int ostpolnr;
    //int a, b;
    //sf::Vector2i afasdf;
    //sf::Vector2f ostposA;
    //sf::Sprite a;
    bool blokwyb;
    bool upp;
    bool left;
    bool right;
    bool down;
    bomba()
    {
        blokwyb = false;
        upp = false;
        left = false;
        right = false;
        down = false;
    }
   
    void wybuch();
    void postaw( int x, int y );
    void opst();
    static void txt();
};

#endif

Jeżeli odkomentuję dowolną linijkę, to wszystko jest ok pomimo, że nie używam tych zmiennych. I jeszcze zauważyłem, że C::B kompiluje wolniej niż zwykle.
P-89571
MrPoxipol
» 2013-08-05 23:25:45
Może wychodzisz gdzieś poza zakres tablicy? Gdzieś w kodzie?
P-89572
czosnek17
Temat założony przez niniejszego użytkownika
» 2013-08-05 23:43:46
C/C++
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Space ) )
{
    cout << "KKKKKKKKKKKKKKKKKKKKKK\n";
    //...

Bombę stawiam na spację. Chciałem za pomocą cout sprawdzać  w jakiej linijce program przestaje działać, ale po jego dopisaniu bomba nawet nie pojawia się na ekranie, tekst nie jest wypisywany.
Kliknąłem na Debug, mam SIGSEGV, a w call stack http://img687.imageshack.us​/img687/8743/7nwk.png Tylko tyle, bo nie umiem obsługiwać debuggera.
P-89574
MrPoxipol
» 2013-08-05 23:48:30
Musisz pokazać więcej kodu związanego z tą klasą i sprawdź jeszcze czy gdzieś nie wychodzisz poza tablicę.
P-89575
DejaVu
» 2013-08-06 13:28:37
Rebuild często pomaga w takich sytuacjach.
P-89587
czosnek17
Temat założony przez niniejszego użytkownika
» 2013-08-06 19:19:48
Dzięki, rzeczywiście wychodziłem poza tablice bo po zwiększeniu jej rozmiaru wszystko działało.
Już mam następne bugi ;_;
P-89640
« 1 »
  Strona 1 z 1