/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
operator overloading
Fra : PVI


Dato : 06-06-03 07:34

Hejsa,

Jeg vil gerne lave en operator overloading af "<<" på min klasse, således
at jeg kan lave følgende :

MyClass << "Hello World. " << 10 << " tons of bear".

Jeg har forsøgt at lave følgende i MyClass

friend ostream & operator<< (ostream &os, const char *lLine);
friend ostream & operator<< (ostream &os, int iVal);

Men når jeg så implementere ostream &MyClass:erator<<(ostream &os, const
char *lLine) {.....};

får jeg compiler fejlen : Must take exactly 1one argument.

Jeg bruger gnu c++ compiler.

Hvad gør jeg forkert eller hvad har jeg misforstået ?

På forhånd tak for hjælpen.

Peter Villadsen

 
 
Ivan Johansen (06-06-2003)
Kommentar
Fra : Ivan Johansen


Dato : 06-06-03 09:38

PVI wrote:
> Jeg vil gerne lave en operator overloading af "<<" på min klasse, således
> at jeg kan lave følgende :
>
> MyClass << "Hello World. " << 10 << " tons of bear".
>
> Jeg har forsøgt at lave følgende i MyClass
>
> friend ostream & operator<< (ostream &os, const char *lLine);
> friend ostream & operator<< (ostream &os, int iVal);
>
> Men når jeg så implementere ostream &MyClass:erator<<(ostream &os, const
> char *lLine) {.....};

Du blander vist forskellige ting sammen. Du er nødt til at beslutte om
funktionen skal være friend eller medlem. Den kan ikke være begge dele.
At overloade operator<< for ostream på venstre side og const char* eller
int på højre side er ikke nogen god ide, da den er overloadet i
forvejen. Jeg ved ikke hvad det helt præcist er du vil, men måske noget
i retningen af:
class TMyClass
{
public:
TMyClass& operator<<(const char *lLine);
TMyClass& operator<<(int iVal);
};

TMyClass& TMyClass:erator<<(const char *lLine)
{
//Do something
return *this;
}

TMyClass& TMyClass:erator<<(int iVal)
{
//Do something
return *this;
}

Denne kan bruges som:
TMyClass MyClass;
MyClass << "Hello World. " << 10 << " tons of bear";

Ivan Johansen


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste