Poczatki w polimorfizmie .C++

0

Witam, mam pewien problem z definiowaniem zmiennych obiektów umieszczonych w tablicy. Dość ciężko to wytłumaczyć, tak wygląda kod :

class cBrick
{
   public:
          int x,y;
          int szerokosc;
          BITMAP *bBrick;
          void show(BITMAP *bufor,int x,int y)
          { masked_blit(bBrick, bufor, 0,0, x, y, bBrick->w, bBrick->h);}
                  
};
//main. w rzeczywistosci bedzie tu petla for ale probowalem (bezskutecznie) tez bez niej
 cBrick *brick[6];
  brick[0]->bBrick = load_bmp("brick.bmp",default_palette);
  brick[0]->szerokosc=70;
  brick[1]->bBrick = load_bmp("brick.bmp",default_palette);
  brick[1]->szerokosc=70;

Jestem z góry wdzięczny za pomoc

0

Musisz utworzyć faktyczne obiekty za pomocą operatora new.

0

Rowijając nieco:

cBrick *brick[6];

To jest tablica wskaźników a nie obiektów. Wskaźnik to tylko liczba która określa adres w pamięci gdzie leży jakiś obiekt. Póki co nie utworzyłeś żadnych obiektów więc te wskaźniki pokazują cholera-wie-gdzie. Musisz utworzyć obiekty i przypisać ich adresy do tych wskaźników. Najwygodniej będzie tak:

cBrick* brick = new cBrick[6];

W ten sposób do wskaźnika brick przypiszesz adres pierwszego z 6 zaalokowanych obiektów. Jako ze arytmetyka wskaźników typowanych na to pozwala, możesz używać tego wskaźnika jak tablicy, tzn robić brick[0], brick[1] itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1