๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4985

Re: [C++] function overloading en typedef

#4985
From: Roel Schroeven
Date: Wed, 28 May 2003 13:13
59 lines
3038 bytes
Dominique Devriese wrote:
> Johan Vervloet writes:
> 
>   Johan> Hallo, Ik zit met een probleem gelijkaardig aan het volgende
>   Johan> :
> 
>   Johan> Stel ik heb een klasse GekleurdeInt, en ik wil die als volgt
>   Johan> definieren :
> 
>   Johan>         typedef int Kleur; // proper niwaar :-)
> 
>   Johan>         class GekleurdeInt { public:
>   Johan>                 GekleurdeInt( int i ); GekleurdeInt( Kleur k
>   Johan>                 );
>   Johan>         /* enz */ };
> 
>   Johan> Dit werkt dus niet, aangezien int en Kleur voor de compiler
>   Johan> van hetzelfde datatype zijn.
> 
>   Johan> Bestaat er hiervoor een mooie oplossing, zonder hiervoor een
>   Johan> hele nieuwe klasse Kleur te moeten maken ?
> 
> het zgn. "Named Constructor Idiom" [1] kan hier mss helpen ?
> 
> Kort samengevat wordt dat dus:
> 
> typedef int Kleur;
> 
> class GekleurdeInt
> {
> public:
>         GekleurdeInt( int i, Kleur k );
>         static GekleurdeInt fromInt( int i );
>         static GekleurdeInt fromKleur( Kleur k );
> };

GekleurdeInt foo = GekleurdeInt::fromInt(123);

Dat wil dan wel zeggen dat je bij elke initialisatie eerst een object 
gaat aanmaken, en het dan kopi๏ฟฝren. Voor kleine klassen niet erg, voor 
grotere zaken is dat wel lastig.

Als je de objecten met new maakt is het geen probleem:

typedef int Kleur;

class GekleurdeInt
{
public:
         GekleurdeInt( int i, Kleur k );
         static GekleurdeInt* fromInt( int i );
         static GekleurdeInt* fromKleur( Kleur k );
};

GekleurdeInt *foo = GekleurdeInt::fromInt(123);

-- 
"Codito ergo sum"
Roel Schroeven
Technical Details
Message-ID: <aC2Ba.24224$1u5.1890@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!38.144.126.76.MISMATCH!feed2.newsreader.com!newsreader.com!newshosting.com!news-xfer2.atl.newshosting.com!newsfeed.kabelfoon.nl!212.113.2.136.MISMATCH!newsfeed.london1.eu.level3.net!level3eu!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <3ed4a249.0@news.ruca.ua.ac.be> <87el2jns51.fsf@student.kuleuven.ac.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,3077f069a49c0aca
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-05-28 06:13:59 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!38.144.126.76.MISMATCH!feed2.newsreader.com!newsreader.com!newshosting.com!news-xfer2.atl.newshosting.com!newsfeed.kabelfoon.nl!212.113.2.136.MISMATCH!newsfeed.london1.eu.level3.net!level3eu!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: Roel Schroeven <j4nff5m02@sneakemail.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030507
X-Accept-Language: nl-be, nl, en-us, en
MIME-Version: 1.0
Newsgroups: be.comp.programming
Subject: Re: [C++] function overloading en typedef
References: <3ed4a249.0@news.ruca.ua.ac.be> <87el2jns51.fsf@student.kuleuven.ac.be>
In-Reply-To: <87el2jns51.fsf@student.kuleuven.ac.be>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 60
Message-ID: <aC2Ba.24224$1u5.1890@afrodite.telenet-ops.be>
Date: Wed, 28 May 2003 13:13:42 GMT
NNTP-Posting-Host: 213.119.50.245
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1054127622 213.119.50.245 (Wed, 28 May 2003 15:13:42 MET DST)
NNTP-Posting-Date: Wed, 28 May 2003 15:13:42 MET DST
Organization: Telenet Internet