Zmienna statyczna w metodzie nie-statycznej

0

Cześć,

#ifndef STATKI_POLE_H
#define STATKI_POLE_H
#include "plik_naglowkowy.h"
//#include <allegro5/allegro_primitives.h>

class pole
{
private:
    static int rozmiar;
    static ALLEGRO_BITMAP * pole_statek;
    static ALLEGRO_BITMAP * pole_odkryte;
    static ALLEGRO_BITMAP * pole_zakryte;

    bool wartosc;   // 0 - nie-statek,  1 - statek
    bool odkrycie;  // 0 - zakryty      1 - odkryty
    int poz_x;
    int poz_y;

public:
    static void generuj_bitmapy();

    void wyswietl();
    void odkryj();
    void zakryj();
    pole(int px, int py);
};

#endif //STATKI_POLE_H
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include "pole.h"

void pole::wyswietl()
{
    rozmiar++;
    al_draw_bitmap(pole_statek, poz_x, poz_y, 0);
}

mam klasę o nazwie pole.
Każdy obiekt pola posiada swoje położenie na ekranie.
Klasa pole zawiera zmienną statyczną - bitmapę. Jest to zmienna statyczna, dlatego żeby nie kopiować tej samej bitmapy dla każdego obiektu typu pole. Klasa pole zawiera też zmienną statyczną rozmiar (wszystkie zmienne są private).
W metodzie nie-statycznej próbuje wyświetlić tą bitmapę, ale otrzymuje komunikat undefined reference to pole::pole_statek. Co ciekawe instrukcja rozmiar++ działa (w tej samej metodzie).

Zależy mi na tym żeby mieć tą bitmapę jako statyczną i na tym żeby była metoda wyświetl() (nie musi być statyczna jeśli można inaczej). Jak to zrobić? :)

1

Najlepiej zacząć od pokazania kodu.

0

Zakładam, że nie ma definicji.

0

Dodaj do cpp:

int pole::rozmiar;
ALLEGRO_BITMAP * pole::pole::pole_statek;
ALLEGRO_BITMAP * pole::pole_odkryte;
ALLEGRO_BITMAP * pole::pole_zakryte;

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