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

[Allegro5] Klasa i wskaźniki

Ostatnio zmodyfikowano 2010-02-09 23:56
Autor Wiadomość
steckel
Temat założony przez niniejszego użytkownika
» 2010-02-09 22:28:23
Ta struktura wygląda tak:
C/C++
struct ALLEGRO_FONT
{
    void * data;
    int height;
    ALLEGRO_FONT_VTABLE * vtable;
};
Taki konstruktor kopiujący nie zadziałał:
C/C++
Czcionka( const Czcionka & czcionka ) {
    font->data = czcionka.font->data;
    font->height = czcionka.font->height;
    font->vtable = czcionka.font->vtable;
    kolor = czcionka.kolor;
}
Gdy próbowałem skopiować samo 'height', żeby nie bawić się we wskaźniki tej struktury, to też niestety nie zadziałało.
P-13729
malan
» 2010-02-09 23:54:05
Przed stworzeniem obiektu tej klasy masz gdzieś alfont_init ?
P-13734
DejaVu
» 2010-02-09 23:56:48
Cóż wyjaśnię Ci Twój błąd tak łopatologicznie na innym przykładzie:
C/C++
int * a = new int;
int * b = a;
delete a;
delete b; //i masz kwas.
Ty robisz błąd w miejscu:
C/C++
int * b = a;
, ponieważ alokujesz dane jakąś nieznaną Ci funkcją (tj. nie wiesz co ona robi) i masz do zmiennej cały interfejs do obsługi, więc musisz użyć interfejsu dostępnego w allegro, aby zrobić drugą kopię tego obiektu.
Przykład powyższy zadziała więc gdy:
C/C++
int * b = new int( * a );
W przypadku gdy używasz czegoś czego nie znasz to musiałbyś zrobić tak:
COSTAM * b = FunkcjaKopiujaca( a );
gdzie funkcja kopiująca musi być udostępniona przez interfejs lub musisz znać dokładnie działanie funkcji tworzącej font'a, by móc prawidłowo napisać sobie funkcję kopiującą.
P-13735
1 2 « 3 »
Poprzednia strona Strona 3 z 3