🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Sztuka Kodowania w C++ - Nowa Wersja!

#310318
From: Adam M
Date: Wed, 09 Dec 2020 21:54
61 lines
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-mail
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>

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