Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 10th, 2012  |  syntax: None  |  size: 2.00 KB  |  hits: 6  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Simple reference variable assignment causing segfault in global pointer to object?
  2. class explosionhandler {
  3.         public:
  4.     struct explosion {
  5.     ...
  6.     };
  7.     vector<struct explosion> explosions;
  8.     struct explosion_type {
  9.     ...
  10.     };
  11.     vector<struct explosion_type> type;
  12.     int num_types;
  13.  
  14.     explosionhandler();
  15.     ~explosionhandler();
  16.     void registerexplosion(int& ttype,ALLEGRO_BITMAP*& b,int seq, float a, float m,float e);
  17.  
  18.     void createexplosion(int ttype,float x,float y);
  19.     void drawexplosions(ALLEGRO_BITMAP* screen);
  20.  
  21.     void gettype(explosion_type& a,ALLEGRO_BITMAP*& b,int& nseq, float& aa, float& ee, float& mm);
  22.  
  23.  
  24.         };#endif
  25.        
  26. explosionhandler::explosionhandler()
  27.     {
  28.         num_types=0;
  29.     }
  30.     void explosionhandler::registerexplosion(int& ttype,ALLEGRO_BITMAP*& b,int seq, float a, float m,float e)
  31.     {
  32.         explosion_type n;
  33.         ....
  34.         ttype = num_types;     /*********** right here *******************/
  35.         num_types++;
  36.         type.push_back(n);
  37.     }
  38.        
  39. ...
  40. class explosionhandler;
  41. class rocket {
  42. public:
  43.         ...
  44.         void setrocket(ALLEGRO_BITMAP*& a,ALLEGRO_BITMAP*& b, explosionhandler*& h);
  45.         ...
  46.         int exptype;
  47.         ...
  48. }; #endif
  49.        
  50. rocket::rocket()
  51. {
  52.         ...
  53.         exptype=-1;
  54. }
  55. void rocket::setrocket(ALLEGRO_BITMAP*& a,ALLEGRO_BITMAP*& b, explosionhandler*& h)
  56. {
  57.     handler = h;
  58.     area.sethitboundaries(a);
  59.     fprintf(stdout,"setrocket, # of rockets in vector: %in",(int)rockets.size());
  60. h->registerexplosion(exptype,b,3,(float)al_get_bitmap_width(b),(float)0,(float)-18); //called function
  61. }
  62.        
  63. #include "rocket.h"
  64. #include "explosionhandler.h"
  65. #include <allegro5/allegro.h>
  66. #include <allegro5/allegro_image.h>
  67. #include <stdio.h>
  68. #include <cstdlib>
  69. #define PI 3.14159265
  70. ...
  71. rocket rock(bullet_speed+2,width,height);
  72. explosionhandler *handler;
  73. ...
  74. int setup()
  75. {
  76.         ...
  77.         rock.setrocket(rk,exp,handler);
  78.         rock.setlimit(5);
  79.         al_set_target_bitmap(al_get_backbuffer(display));
  80.         ...
  81. }
  82. ...