Article View: be.comp.programming
Article #14913Re: c++ i/o vraagje
From: Kristof Verhenne
Date: Tue, 02 Jan 2001 08:19
Date: Tue, 02 Jan 2001 08:19
75 lines
3177 bytes
3177 bytes
Bart Van den Bossche wrote:
>
> On Mon, 1 Jan 2001, Kristof Verhenne wrote:
>
> > Is het mogelijk om aan de << operator 2 verschillende betekenissen te
> > geven in een bepaalde klasse. Ik wil namelijk de fstream anders opslaan
> > dan de output naar scherm.
> > Nu heb ik volgende functies:
> >
> > friend ostream& operator<<(args)
> > friend ofstream& operator<<(args)
> >
> > als ik nu een file heb
> > ofstream fs("file",ios::app);
> > fs << i;
> >
> > Dan roept hij de bovenste operator aan voor het object i, terwijl ik de
> > onderste wil, hoe komt dit, hoe kan ik dat oplossen?
>
> class Test {
> ...
> friend ostream& operator<<(ostream&, Test&);
> friend ofstream& operator<<(ofstream&, Test&);
> };
> ofstream& operator<<(ofstream &o, Test &t) { ... }
> ostream& operator<<(ostream &o, Test &t) { ... }
>
> Zo werkt het bij mij toch. Voor (operator) overloading is het belangrijk
> dat uw argumenten verschillen, de compiler kijkt niet naar het return
> type.
>
Ik doe het nochtans zo
\\ingredient.h
friend ofstream& operator<< (ofstream&, const Ingredient &);
friend ostream& operator<< (ostream&, const Ingredient &);
\\ingredient.cpp
ofstream& operator<< (ofstream & fs,const Ingredient& i)
{
fs << i.ppe << i.type << i.naam << endl;
return fs;
}
ostream& operator<< (ostream & os, const Ingredient& i)
{
os << i.naam << " : " << i.ppe << " per ";
switch (i.type) {
case 'l' : os << "liter" << endl;
break;
case 'g' : os << "gram" << endl;
break;
};
return os;
}
\\het gebruik
int schrijfIngredient(Ingredient & i, ExString & f)
{
ofstream fs(f,ios::app);
fs << i;
fs.close();
}
--
Kristof Verhenne
Kristof.Verhenne@rug.ac.be
Homepage : http://studwww.rug.ac.be/~kverhenn
West Vlaamse Linux User Group : http://home.tiscalinet.be/lug-wv
Technical Details
Message-ID:
<3A518EFE.347873A7@rug.ac.be>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!newsfeed.icl.net!newsfeed.icl.net!newsfeeds.belnet.be!news.belnet.be!skynet.be!poster!localhost.localdomain!nobodyReferences:
<3A50C921.4ED767D0@rug.ac.be> <Pine.LNX.4.21.0101012019100.5388-100000@backslash.moeha.net>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,72cd05f034fe4ac7 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-01-02 01:47:49 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!newsfeed.icl.net!newsfeed.icl.net!newsfeeds.belnet.be!news.belnet.be!skynet.be!poster!localhost.localdomain!nobody From: Kristof Verhenne <kristof.verhenne@rug.ac.be> Newsgroups: be.comp.programming Subject: Re: c++ i/o vraagje Date: Tue, 02 Jan 2001 09:19:10 +0100 Organization: West Vlaamse Linux User Group Lines: 75 Message-ID: <3A518EFE.347873A7@rug.ac.be> References: <3A50C921.4ED767D0@rug.ac.be> <Pine.LNX.4.21.0101012019100.5388-100000@backslash.moeha.net> NNTP-Posting-Host: free2699.powered-by.skynet.be Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: news1.skynet.be 978428868 5927 62.4.138.139 (2 Jan 2001 09:47:48 GMT) X-Complaints-To: abuse@skynet.be NNTP-Posting-Date: 2 Jan 2001 09:47:48 GMT X-Mailer: Mozilla 4.75 [en] (X11; U; Linux 2.2.17-21mdk i686) X-Accept-Language: en