Article View: be.comp.programming
Article #11803Re: C++ vraag: help mij.
From: Luc Kumps
Date: Mon, 14 Jan 2002 21:23
Date: Mon, 14 Jan 2002 21:23
50 lines
2698 bytes
2698 bytes
<Bart.Vanhauwaert@nowhere.be> wrote in message
news:a3tn1a.prb.ln@10.0.0.2...
> De truuk is te verhinderen dat er klasses gecreerd worden door de
> constructor private te maken. Daarenboven voorzien we een static
> (maar public) member functie die juist 1 object zal aanmaken en
> altijd de referentie naar dat object geeft.
>
> RG.h:
> class RG
> {
> private:
> RG();
> RG(const RG& anOther);
>
> public:
> double randomDouble(double Min, double Max);
>
> public:
> static RG& theRG();
> };
>
> RG.cc:
> RG& RG::theRG()
> {
> static RG r;
> return r;
> }
>
> Iedere class die nu een random getal nodig heeft doet dan bv
>
> #include "RG.h"
>
> std::cout << RG::theRG().randomDouble(-1.0,1.0) << std::endl;
>
> Dit lost jou vraag op voor het geval dat er slechts 1 object tijdens
> de volledige uitvoering maar gecreerd worden.
Dit is inderdaad de beste en simpelste oplossing (ge�ntroduceerd door Scott
Meyers in 'Effective C++', en daarom ook wel "Meyers' singleton" genoemd).
Er hoort evenwel ��n kleine randbemerking bij: dit werkt _alleen_ in single
threaded environments!
In multithreaded environments kan men dit ook gebruiken, maar dan moet er
wel voor zorgen dat men, VOOR men threads begint te cre�ren, ��nmaal
RG::theRG() uitvoert, zodat het object gemaakt is vooraleer het ding uit
verschillende threads opgeroepen wordt...
Indien dit niet gaat, wordt het een hele klus, die als oefening aan de
ge�nteresseerde lezer wordt gelaten ;-)
Luc K
Technical Details
Message-ID:
<E%H08.68780$rt4.4733@afrodite.telenet-ops.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<3c3f0fae$0$75147$ba620e4c@news.skynet.be> <a3tn1a.prb.ln@10.0.0.2>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: 107324,afb1ff46730e5f89 X-Google-Attributes: gid107324,public X-Google-Thread: fcea4,afb1ff46730e5f89 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-01-14 13:23:49 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: "Luc Kumps" <NOkumpsSPAM@pandora.be> Newsgroups: be.comp.programming,nl.comp.programmeren References: <3c3f0fae$0$75147$ba620e4c@news.skynet.be> <a3tn1a.prb.ln@10.0.0.2> Subject: Re: C++ vraag: help mij. Lines: 53 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700 Message-ID: <E%H08.68780$rt4.4733@afrodite.telenet-ops.be> Date: Mon, 14 Jan 2002 21:23:48 GMT NNTP-Posting-Host: 213.118.67.244 X-Complaints-To: abuse@pandora.be X-Trace: afrodite.telenet-ops.be 1011043428 213.118.67.244 (Mon, 14 Jan 2002 22:23:48 MET) NNTP-Posting-Date: Mon, 14 Jan 2002 22:23:48 MET Organization: Telenet Internet