Hejsa.
Jeg har ikke umiddelbart en løsning, men der er nogle uhensigtsmæssigheder i
din kode.
Du returnerer ingen reference til "ud", i slutningen af din funktion.
Det skal du gøre, så vidt jeg ved, ellers vil det vist gå galt når du laver
flere af disse
operationer af gangen
f.eks ved:
string a;
a << MinKlasse1 << MinKlasse2;
Du erklærer en memberfunktion operator<<, som du aldrig implementerer.
den funktion du derimod laver er den globale funktion for operatoren<<.
hvis du skulle have lavet det med funktionen i klassen skulle din syntax jo
være noget
nær sådan her:
string& MinKlasse
erator<<(.....
Men af nogle obskure grunde, er det vist fornuftigst at lave
implementationen som en global
funktion.. måske ikke lige i dette tilfælde, men ved operatorer som + og -
hvor man
forventer at de virker ens uanset hvilken rækkefølge du putter dine
argumenter ind i, giver det nogle problemer.
så jeg tror det smarte er at slette det erklæring i klassen, såvidt jeg kan
se, er den ihvertfald overflødig.
Jonas
"Jesper Gødvad" <Xesper@goedvad.dk> wrote in message
news:9g653t$8dm$1@sunsite.dk...
> Hej Alle.
>
> Jeg har lavet en overloaded funktion til min klasse
>
> class MinKlasse {
> string returStreng() { return "min tekst"; }
> friend string& operator <<( string&, const MinKlasse& );
> };
>
> string& operator<< (string& ud, const MinKlasse & kilde ) {
> ud += min_streng; // virker fint
> ud += fri_funktion( min_streng ); // virker også fint
> ud += kilde.returStreng(); // virker ikke
> }
>
> Resultatet er følgende kompileringsfejl under g++, RedHat Linux:
>
> parsing const MinKlasse' as 'this' argument of const string
> MinKlasse::returSteng() ' discards qualifiers
>
> Hvorfor kan jeg ikke kalde funktionen og hvad "betyder" fejl-meddelelsen?
>
> Håber nogen kan hjælpe.
>
> mvh. jesper
>
>