Article View: pl.comp.lang.c
Article #310318Re: Sztuka Kodowania w C++ - Nowa Wersja!
From: Adam M
Date: Wed, 09 Dec 2020 21:54
Date: Wed, 09 Dec 2020 21:54
61 lines
3627 bytes
3627 bytes
On Wednesday, December 9, 2020 at 2:55:04 PM UTC-5, heby wrote:
> On 09/12/2020 20:25, heby wrote:
> > Nikt nie każde robić template inline. Możesz zrobić explicit
> > instantiation w pliku cpp.
> Podpowiem:
>
> W pliku my_widget.hpp:
>
> template< typename _T >
> class MyWidget : public _T
> {
> public:
> void update() override;
> }
>
> W pliku my_widget.cpp:
>
> #include "my_widget.hpp"
>
> template< typename _T>
> void
> MyWidget::update()
> {
> //coś
> }
>
> template class MyWidget< QButton >;
> template class MyWidget< QFoo >;
> template class MyWidget< QBar >;
> [...]
>
> I tyle. Dalsze dziedziczenie w kodzie po MyWidget< QFoo > nie powoduje
> przyrostu kodu wykonywalnego. Zystałeś brak wielodziedziczenia,
> straciłeś troche miejsca na podobny kod dla róznych widgetów bazowych
> (ale tylko bazowych). Kompilator *może* ten kod połaczyć w jedno, więc
> może się okazać że nic nie straciłeś.
>
> Zyskałeś również *prawdziwą* możliwość wirtualizacji QFoo, gdzie można
> nadpisać wszystko co chcesz. Dodatkowo nic nie stoi na przeszkodzie aby
> to ciągnąc dalej:
>
> template< typename _T >
> class MyMagicButtonWithFancyBorder : public MyWidget< _T >
> {
> // common logic
> }
>
> class UpButton : MyMagicButtonWithFancyBorder< QButton >
> {
> }
>
> class DownButton : MyMagicButtonWithFancyBorder< QButton >
> {
> }
>
> class PlayButton : MyMagicButtonWithFancyBorder< QFooButton >
> {
> }
>
> itd.
Dzieki za porade - uzyje tej metody w nowym projekcie ktory startuje zaraz po Nowym Roku - w tym z ktorego dalem przyklad za duzo przerabiania + zewnetrzni kosultanci z ktorymi nie mam sily ani ochoty prowadzic wojny o zmiane stylu.
Technical Details
Message-ID:
<7fa3598c-d6e3-4022-8d77-31feaa7ac913n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!tr3.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<478ab743-cd00-4961-88e1-983025db304bn@googlegroups.com> <d9830106-c21a-4564-b45f-0766ef86181fn@googlegroups.com> <cdd14123-89b7-4f80-9f2b-865f1038810an@googlegroups.com> <e38a42c4-36d3-49b6-8644-468f65828f4cn@googlegroups.com> <edd1ce6a-46e1-4883-8943-db4a0da8da33n@googlegroups.com> <8d469f13-e697-4488-8adf-29117a3eeb8cn@googlegroups.com> <rqqscj$p0n$1@dont-email.me> <b093aa7a-52ad-414b-b1c5-28d1d94a88d5n@googlegroups.com> <rqr383$gtr$1@dont-email.me> <0ae10656-cdda-4382-a912-d8d7a25a1d4dn@googlegroups.com> <rqr8ak$kp6$1@dont-email.me> <rqra2l$1mb$1@dont-email.me>Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:6214:1230:: with SMTP id p16mr5245563qvv.47.1607550879119; Wed, 09 Dec 2020 13:54:39 -0800 (PST) X-Received: by 2002:aed:2743:: with SMTP id n61mr5453779qtd.182.1607550878834; Wed, 09 Dec 2020 13:54:38 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!tr3.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Wed, 9 Dec 2020 13:54:38 -0800 (PST) In-Reply-To: <rqra2l$1mb$1@dont-email.me> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=50.248.133.1; posting-account=aFGPVQoAAADngh59qlchYygiuB87zBBU NNTP-Posting-Host: 50.248.133.1 References: <478ab743-cd00-4961-88e1-983025db304bn@googlegroups.com> <d9830106-c21a-4564-b45f-0766ef86181fn@googlegroups.com> <cdd14123-89b7-4f80-9f2b-865f1038810an@googlegroups.com> <e38a42c4-36d3-49b6-8644-468f65828f4cn@googlegroups.com> <edd1ce6a-46e1-4883-8943-db4a0da8da33n@googlegroups.com> <8d469f13-e697-4488-8adf-29117a3eeb8cn@googlegroups.com> <rqqscj$p0n$1@dont-email.me> <b093aa7a-52ad-414b-b1c5-28d1d94a88d5n@googlegroups.com> <rqr383$gtr$1@dont-email.me> <0ae10656-cdda-4382-a912-d8d7a25a1d4dn@googlegroups.com> <rqr8ak$kp6$1@dont-email.me> <rqra2l$1mb$1@dont-email.me> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <7fa3598c-d6e3-4022-8d77-31feaa7ac913n@googlegroups.com> Subject: Re: Sztuka Kodowania w C++ - Nowa Wersja! From: Adam M <amorawski@magna-power.com> Injection-Date: Wed, 09 Dec 2020 21:54:39 +0000 Lines: 69 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit