@
szulak ;
Z kodem troszke cianko, bo uzywam tutaj biblioteki FLTK, a projekt nieco wiekszy, no ale to wyglada mniej wiecej tak:
Kod:
class A
{
A();
~A();
Fl_Button *przycisk;
static void przyciskCB(Fl_Widget*, void*);
};
class B
{
B(int, int);
~B();
};
Kod:
A::A(){
Fl_Window nazwaOkienka = new Fl_Window(500, 500, "Nazwa");
B nazwa2 = new B(300, 300);
przycisk = new Fl_Button(100, 100, 50, 50, "zamknij");
}
void A::przyciskCB(Fl_Widget* w, void *v)
{
delete static_cast<A*>(v);
}
A::~A()
{
delete przycisk;
}
Oczywiscie tego jest wiecej w kodzie, a to jest przykladowo. Sprzydaloby sie zrobic delete rowniez na "nazwa2" oraz "nazwaOkienka", ale destruktor nie widzi tych obiektow. Oczywiscie moge zrobic podobny trick jak z przyciskiem, albo uzyc inteligentnych wskaznikow (powinno chyba zadzialac), ale zastanawiam sie czy jest jakis prostszy sposob.
Wiem, ze przyklad troche smieszny, ale w aplikacji wyglada to nieco inaczej, a chodzi po prostu o to, by przycisk kasowal caly ten obiekt. Jezeli gdzies zle cos zrobilem, to tez wytknijcie mi, bo ucze sie dopiero xd.