Article View: pl.comp.lang.c
Article #309652Destructor a funkcja wirtualna
From: Borneq
Date: Thu, 15 Mar 2018 18:41
Date: Thu, 15 Mar 2018 18:41
20 lines
1613 bytes
1613 bytes
Mam klasę abstrakcyjną Node i metodę wirtualną toString()
chcę podczas kasowania obiektów wypisywać nazwę tego obiektu:
virtual ~Node()
{
printf("delete %s\n",toString().c_str());
}
Nie udało się zrobić:
virtual string toString() = 0
zrobiłem
virtual string toString(){ return "abstract";};
nadpisuję te metodę w klasach ,ale i tak destructor woła ją nie wirtualnie.
Pytanie: jak zrobić wypisywanie w destructorze elementów które kasuje
podczas gdy korzystam z takich pól jak name, które jest zdefiniowane w
innych klasach?
Ale chyba rozumiem w czym problem, ten destruktor to za późne
przechwycenie, bo w toString miałem wypisywać całe drzewka mające w
korzeniu obiekt Node na rzecz którego wołam, a w destruktorze i tak
byłyby pokasowane.
Technical Details
Message-ID:
<p8eep1$7an$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Borneq <borneq@antyspam.hidden.pl> Newsgroups: pl.comp.lang.c Subject: Destructor a funkcja wirtualna Date: Thu, 15 Mar 2018 19:41:37 +0100 Organization: ATMAN - ATM S.A. Lines: 20 Message-ID: <p8eep1$7an$1@node1.news.atman.pl> NNTP-Posting-Host: public-gprs350577.centertel.pl Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1521139297 7511 37.47.0.178 (15 Mar 2018 18:41:37 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Thu, 15 Mar 2018 18:41:37 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 X-Mozilla-News-Host: news://news.atman.pl:119 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit