🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #14913

Re: c++ i/o vraagje

#14913
From: Kristof Verhenne
Date: Tue, 02 Jan 2001 08:19
75 lines
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!nobody
References: <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