[C++][Allegro5 5.2.0] ALLEGRO_BITMAP*
Ostatnio zmodyfikowano 2016-06-16 11:59
00Andre Temat założony przez niniejszego użytkownika |
[C++][Allegro5 5.2.0] ALLEGRO_BITMAP* » 2016-06-16 11:35:59 Witam serdecznie wszystkich ;) Mam mały problem. a więc mam jeden bitmap i do drugiego bitmap'a przypisuje bitmap 1 ALLEGRO_BITMAP * bt1 = al_load_bitmap( "bt1.png" ); ALLEGRO_BITMAP * bt2 = bt1;
i gdy chce np. modyfikować bt2 to także modyfikuje się bt1 ! Oczywiście można użyć funkcji al_clone_bitmap, tylko u mnie problem polega na bardzo częstym użyciu tej operacji, a to zwalnia trochę projekt. Próbowałem zrobić to na normalnych wskaźnikach i przy modyfikowaniu wskaźnika 2 nie zmieniał się wskaźnik 1int * create( int val ) { return & val; }
int * ptr1 = create( 20 ); int * ptr2 = ptr1; * ptr2 = 55;
std::cout << "\n ptr1: " << * ptr1 << " ptr2: " << * ptr2;
i wychodzi to, co chciałem uzyskać ptr1: 20 ptr2: 55
Przy ALLEGRO_BITMAP* to nie działa i nie mam pomysłu jak to rozwiązać |
|
Monika90 |
» 2016-06-16 11:59:48 int * create( int val ) { return & val; }
Zwracasz adres automatycznej zmiennej lokalnej (parametry funkcji to są zmienne lokalne). Tak nie można, to prowadzi do niezdefiniowanego zachowania. Nie ma wyjścia, jeżeli chcesz mieć 10 niezależnych bitmap, to musisz 10 razy wywołać load_bitmap, albo raz load_bitmap i 9 razy clone_bitamp, itp. |
|
« 1 » |