Dziwna sprawa - gdy w klasie nie zadeklaruję zmiennej to program się wysypuje
Ostatnio zmodyfikowano 2013-08-06 19:19
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: |
|
MrPoxipol |
» 2013-08-05 23:05:47 Bez kodu może być problem z wyjaśnieniem. |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2013-08-05 23:19:34 Jest to plik .hpp: #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; 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. |
|
MrPoxipol |
» 2013-08-05 23:25:45 Może wychodzisz gdzieś poza zakres tablicy? Gdzieś w kodzie? |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2013-08-05 23:43:46 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. |
|
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ę. |
|
DejaVu |
» 2013-08-06 13:28:37 Rebuild często pomaga w takich sytuacjach. |
|
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 ;_; |
|
« 1 » |