🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309032

Re: Jak sprawdzić jakiej klasy jest obiekt (wskaźnik) ?

#309032
From: bartekltg
Date: Sun, 23 Apr 2017 14:48
43 lines
2787 bytes
On 23.04.2017 16:03, Przemek Biernat wrote:
> Przez uproszczenie const char * nazywam stringiem, jestem pewien
> prawie na 100% że jest to wolniejsze ale skoro gui to może nie ma
> znaczenia.

Trochę się poszpieszyłęm. Myślałem, że mówisz o tym .name()
Chodziło mi o to, że w tamtym kodzie
uzyłęm metody name z klasy typename, bo tak było szybciej.
Do porównywania w kodzie lepiej użyć albo metody hash_code
(ale mogą być konflikty i wylądujemy w ciemnym miejscu)
albo, najelpiej funkcji type_index.

piszę type_index(typeid(*ptr)) i mam unikalny size_t.

Ale rzeczywisćie, przynajmniej w gcc, tam w kod zerknąłem, type_info to
opakowanie na łancuch, więc dość obciążające w porównaniu do Twojego
rozwiązania.


> Najlepiej byłoby zrobić mape z enumami gdzie value to wskaźnik na
> obiekt funkcyjny, rozumiem że tak funkcyjny/miałby renderować
> wyświetlać. Po enumie dostajesz funktor który renderuje obiekt.

W takim wypadku nie wystarczy virtualna funkcja na gorze hierarchii?

> Tą mape opokowujesz w klase fabryka i jest. Ale faktycznie jak jest
> dużo klas to enum jest duży.


> A i zapomniałem metoda type() powinna być implementowana tylko w
> klasach liściach co

O ile wszytkie okiekty, których używasz, są typami z lisci hierarhii.


>  upraszcza zarządzanie chociaż by ze wzglęu na
> wsparcie kompilatora

Dlaczego?


pzdr
bartekltg
Technical Details
Message-ID: <odies3$iqc$1@node2.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-mail
References: <o79kim$psa$1@node1.news.atman.pl> <o79kim$psa$1@node1.news.atman.pl> <almarsoft.6916192281123605763@news.v.pl> <b514bb54-fc83-472e-8fa9-d16bf8d878d0@googlegroups.com> <odf6rg$53e$1@node1.news.atman.pl> <6a23e119-a538-4d44-a3d6-9155442972e7@googlegroups.com> <odg8fv$e46$1@node2.news.atman.pl> <d4556e86-8963-4917-9ce4-0827261ab89c@googlegroups.com> <odi576$9l6$1@node2.news.atman.pl> <2ff067f6-dd5d-49b9-af20-feabc253c064@googlegroups.com>

Show 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: bartekltg <bartekltg@gmail.com>
Newsgroups: pl.comp.lang.c
Subject: Re: Jak sprawdzić jakiej klasy jest obiekt
 (wskaźnik) ?
Date: Sun, 23 Apr 2017 16:48:35 +0200
Organization: ATMAN - ATM S.A.
Lines: 45
Message-ID: <odies3$iqc$1@node2.news.atman.pl>
References: <o79kim$psa$1@node1.news.atman.pl> <o79kim$psa$1@node1.news.atman.pl> <almarsoft.6916192281123605763@news.v.pl> <b514bb54-fc83-472e-8fa9-d16bf8d878d0@googlegroups.com> <odf6rg$53e$1@node1.news.atman.pl> <6a23e119-a538-4d44-a3d6-9155442972e7@googlegroups.com> <odg8fv$e46$1@node2.news.atman.pl> <d4556e86-8963-4917-9ce4-0827261ab89c@googlegroups.com> <odi576$9l6$1@node2.news.atman.pl> <2ff067f6-dd5d-49b9-af20-feabc253c064@googlegroups.com>
NNTP-Posting-Host: 89-70-119-159.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1492958915 19276 89.70.119.159 (23 Apr 2017 14:48:35 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sun, 23 Apr 2017 14:48:35 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
In-Reply-To: <2ff067f6-dd5d-49b9-af20-feabc253c064@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit