Article View: be.comp.programming
Article #4985Re: [C++] function overloading en typedef
From: Roel Schroeven
Date: Wed, 28 May 2003 13:13
Date: Wed, 28 May 2003 13:13
59 lines
3038 bytes
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-mailReferences:
<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