Gå til innhold

Problem med en egendefinert stream


Anbefalte innlegg

har en klasse som skal mota data via operator << dette fungerer om jeg gjør som følgende:

Myclass test;
test << somedata;

 

Jeg får problemer om jeg prøver på følgende

 

test << somedata << moreData;

 

Må jeg definere operatoren annerledes for at det skal fungere å sende inn mer i en lang sekvens?

 

Min operator er som følgende:

void operator << (const float f);

 

Ser det som en fordel å kunne sende inn en lang sekvens av data klassen kan motta. Dette siden det skal benyttes til å skrive til fra fil.

Lenke til kommentar
Videoannonse
Annonse
<snip>

Må jeg definere operatoren annerledes for at det skal fungere å sende inn mer i en lang sekvens?

Jupps

 

Min operator er som følgende:

void operator << (const float f);

 

Den burde være

Myclass& operator << (const float f);

 

Mulig det er litt feil (litt trøtt)... men jeg tror den skal stemme.

 

Lykke til

Lenke til kommentar
  • 3 uker senere...

Når man skal overlaste operatorer er det greit å tenke på hvordan man vil bruke de.

 

F.eks. så er det lett å tenke at hvis man har en klasse, A og vil at man skal kunne skrive ut instanser av A vha. cout og operator<< så overlaster man operator<< i klassen. Dette blir imidlertid feil fordi man da blir nødt til å skrive:

A a;
a << cout;

 

I dette tilfelle må man isteden definere den utenfor klassen:

ostream& operator<<(ostream& os, const A& a)
{
}

Lenke til kommentar
Når man skal overlaste operatorer er det greit å tenke på hvordan man vil bruke de.

 

F.eks. så er det lett å tenke at hvis man har en klasse, A og vil at man skal kunne skrive ut instanser av A vha. cout og operator<< så overlaster man operator<< i klassen. Dette blir imidlertid feil fordi man da blir nødt til å skrive:

A a;
a << cout;

 

I dette tilfelle må man isteden definere den utenfor klassen:

ostream& operator<<(ostream& os, const A& a)
{
}

 

 

Men i mitt tilfelle skal den defineres i klassen fordi jeg ønsker å skrive

a << cout;

 

Det har heller ikke noe med cout å gjøre.

Endret av Zolo
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...