Autor Wątek: [C++ i Allegro] Dynamiczna alokacja pamieci dla BITMAP  (Przeczytany 806 razy)

Offline MatiSSJ

  • Użytkownik

# Czerwiec 24, 2009, 13:49:01
Elo. Tworze sobie silnik dla gier 2D w allegro i chce, aby kazdy aktywny obiekt mogl miec kilka 'swoich' obrazkow, wiec postanowilem zrobic tak, ze w konstruktorze glownej klasy CObject bedzie alokowana dynamicznie tablica typu BITMAP, tylko, ze nie wiem dokladnie jak to zrobic :P, probowalem tak:
Kod: (cpp) [Zaznacz]
BITMAP *picturesTab; // To w dziale 'protected'
//A to konstruktor
CObject::CObject(int index)
{
picturesTab = new BITMAP[index];
}
Nie wychodzilo, bo przy ladowaniu jednego z obrazkow wyskakiwalo mi cos takiego:

16 C:\Dev-Cpp2\main.cpp non-lvalue in assignment
23 C:\Dev-Cpp2\main.cpp no match for 'operator=' in '*(picturesTab + 64u) = load_bmp(((const char*)"C:\\Adrenaline - Compo\\Data\\Wapeons\\KalachIcon.bmp"), ((RGB*)(&default_palette)))'

Ladowanie wygladalo tak:
Kod: (cpp) [Zaznacz]
picturesTab[0] = load_bmp("C:\\Adrenaline - Compo\\Data\\Wapeons\\KalachIcon.bmp",default_palette);
Prosilbym o pomoc.

Z gory THX.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Czerwiec 24, 2009, 13:55:43
Własne bitmapy w Allegro się tworzy tylko i wyłącznie przez create_bitmap, a usuwa przez destroy_bitmap. Żadnych "new", czy "delete". Jeżeli chodziło Ci o dynamiczną tablicę wskaźników na bitmapy, to zapomniałeś jednej gwiazdki. ;) Niemniej jednak sugeruję przerzucić się na std::vector (odpadają praktycznie wszystkie zmartwienia związane z dynamiczną allokacją i deallokacją tablicy). :)