-
Data: 2009-07-28 17:52:03
Temat: Re: [c++]Prosta klasa, czemu nie wywołuje destruktorów?
Od: grg12 <g...@c...at> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]P.K.D pisze:
> Tutaj ta klasa: http://paste.dprogramming.com/dpibqklz
>
> Chodzi o to, że gdy wywołuję server::clearList() to obiekty nie są
> niszczone, chyba dlatego, że lista zawiera wskaźniki. Jak to zrobić i
> czy da się zrobić tak, że destruktory będą wywoływane automatycznie?
Dokładnie dlatego - masz listę wskaźników na obiekty a nie obiektów -
wywoływany jest więc "destruktor" wskaźnika :)
Możesz np. w metodzie clearList przelecieć po wszystkich elementach
zmiennej "servers" i wywołać ich destruktory np. tak:
for(std::list<server *>::iterator ii=servers.begin();ii!=servers.end();
ii++)
{
delete (*ii);
}
servers.clear();
Tyle że ciało tej funkcji prawdopodobnie trzeba będzie zdefiniować poza
klasą - w tym miejscu gdzie jest teraz destruktor jeszcze nie jest
zadeklarowany.
I jeszcze jedno - "delete this" w destruktorze to kiepski pomysł (no
chyba że się coś w specyfikacji języka zmieniło?). Normalnie wywołanie
destruktora jest konsekwencja wywołania delete - destruktor to "ostatnia
szansa na posprzątanie zanim system zwolni pamięć" (np. zwolnić pliki,
usunąć podobiekty utworzone przez new). W twoim przypadku destruktor
może być pusty - jeśli koniecznie chcesz coś tam mieć - wstaw "std::cout
<< "obiekt typu server o nazwie"<<name<<" właśnie popełnia
seppuku"<<std::endl;
Pozdrawiam
GRG
Następne wpisy z tego wątku
- 28.07.09 17:54 Tomasz Bywalec
- 28.07.09 20:11 P.K.D
- 29.07.09 11:37 Mateusz Loskot
- 29.07.09 11:37 Mariusz Kruk
- 29.07.09 11:53 Tomasz Kaczanowski
- 29.07.09 12:29 Tomasz Bywalec
- 29.07.09 12:53 Mateusz Loskot
- 29.07.09 12:54 Mateusz Loskot
- 02.08.09 12:09 Bronek Kozicki
Najnowsze wątki z tej grupy
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
Najnowsze wątki
- 2025-03-20 Grubość socketa AM4+procesor
- 2025-03-20 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-03-20 Warszawa => Senior Programmer C <=
- 2025-03-20 Re: Dlaczego tak odstają od Tesli?
- 2025-03-20 Greenpeace została zobowiązana do zapłaty niemal 667 mln dolarów [USA,wyrok sądu]
- 2025-03-20 Re: Dlaczego tak odstają od Tesli?
- 2025-03-19 Brak ograniczeń dla chińskiego kapitału - wam nie do rządu, tylko na zmywak do chińskiej knajpy!!!
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 szal-Unia == federacja policyjna
- 2025-03-19 Polsza == państwo policyjne
- 2025-03-19 Grzegorz Płaczek o programie szczepień dzieci. ,,Stworzono eldorado dla firm farmaceutycznych"
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 Gemini
- 2025-03-19 Mokry sen Zenka :)
- 2025-03-19 Re: Dlaczego tak odstają od Tesli?