Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++][Allegro5 5.2.0] ALLEGRO_BITMAP*

Ostatnio zmodyfikowano 2016-06-16 11:59
Autor Wiadomość
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
C/C++
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 1
C/C++
int * 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ć
P-149178
Monika90
» 2016-06-16 11:59:48
C/C++
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.
P-149179
« 1 »
  Strona 1 z 1