Sheriff99 Opublikowano 25 Sierpnia 2013 Udostępnij Opublikowano 25 Sierpnia 2013 Witam! Otóż mam taki mały(denerwujący problem w moim projekcie). Mam pliki: KeepTower.cpp #include "KeepTower.h" extern BITMAP * buffer; //Konstruktor--------------------------------------------------------------- KeepTower::KeepTower() { tworz(); //Wywolanie funkcji ladujacej bitmape "keep" rysuj(); //Wywolanie funkcji wyswietlajacej bitmape "keep" na buforze } //Destruktor---------------------------------------------------------------- KeepTower::~KeepTower() { destroy_bitmap(keep); } //Funkcja wczytujaca bitmape "keep"----------------------------------------- void KeepTower::tworz() { keep = load_bmp( "keep.png", default_palette ); if( !keep ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Blad pliku graficznego!" ); allegro_exit(); } } //Funkcja wyswietlajaca na bufferze bitmape "keep"-------------------------- void KeepTower::rysuj() { masked_blit( keep, buffer, 0, 0, x, y, keep->w, keep->h ); } KeepTower.h #ifndef KEEPTOWER_H #define KEEPTOWER_H #include "all_headers.h" #include <allegro.h> class KeepTower { public: int x, y; BITMAP * keep = NULL; void rysuj(); void tworz(); KeepTower(); virtual ~KeepTower(); protected: private: }; #endif // KEEPTOWER_H main.cpp #include <allegro.h> #include "KeepTower.h" volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed ); //---------------------------GLOWNY PROGRAM-------------------------------------------- int main() { allegro_init(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 ); install_keyboard(); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * buffer = NULL; buffer = create_bitmap( 800, 600 ); if( !buffer ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Blad pliku graficznego!" ); allegro_exit(); } KeepTower Gracz; Gracz.x=100, Gracz.y=100; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { speed--; } clear_to_color( buffer, makecol( 150, 150, 150 ) ); blit( buffer, screen, 0, 0, 0, 0, 800, 600 ); } remove_int( increment_speed ); allegro_exit(); } END_OF_MAIN(); //---------------------------KONIEC GLOWNEGO PROGRAMU---------------------------------- all_headers.h #ifndef ALL_HEADERS_H #define ALL_HEADERS_H #include "KeepTower.h" //Klasy projektu #endif // ALL_HEADERS_H_INCLUDED Przy próbie narysowania bitmapy na buforze w funkcji void KeepTower::rysuj w pliku KeepTower.cpp wywala błąd "undefined reference to 'buffer'". Nie wiem co zrobić. Pomóżcie, bo się trochę namęczyłem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 25 Sierpnia 2013 Udostępnij Opublikowano 25 Sierpnia 2013 Po prostu zmienna 'buffer' nie istnieje. Zapewne chcesz ją uzyskać z innego pliku źródłowego. Najwidoczniej z pliku 'main.cpp'. Ale ta zmienna musi być globalna. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się