[GELÖST] C++ Operater << Problem

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Matt
Beiträge: 46
Registriert: 22.03.2004 15:38:36

[GELÖST] C++ Operater << Problem

Beitrag von Matt » 21.01.2011 17:50:02

Hi Leute,

bekomme beim "maken" folgende Fehlermeldung:

Code: Alles auswählen

matthias@debian:~/Desktop/st_a4/code$ make
cc -c -I -O2 Sample.cpp
Sample.cpp: In function ‘std::ostream& operator<<(std::ostream&, const Sample&)’:
Sample.cpp:133: error: passing ‘const Sample’ as ‘this’ argument of ‘void Sample::writeSample(std::ostream&)’ discards qualifiers
make: *** [Sample.o] Fehler 1
matthias@debian:~/Desktop/st_a4/code$ 
Code kommt hier:

Sample.cpp

Code: Alles auswählen

void Sample::writeSample(ostream& strm)
{ 
    
  //Muster: 20.01.2011 16:30 5 40.6 39.8 40.1 38.9 40.2

  double tmp;
  strm << date << " ";
  strm << time << " ";
  strm << quantity << " ";
  for(int i=0;i<quantity;i++)
  {
    strm << results[i] << " ";
  }

  strm << endl;

}

ostream& operator<<(ostream& strm, const Sample& s)

{

  s.writeSample(strm);

  return(strm);

}
Sample.h

Code: Alles auswählen


[ ... ]

void writeSample(ostream& strm=cout);
    
[ ... ]
  
};

//global declarations

ostream& operator<<(ostream& strm, const Sample& s);
istream& operator>>(istream& strm, Sample&);

#endif
Ich sehe den Fehler nicht! :(

Danke schon mal im Voraus!

Gruß, Matt
Zuletzt geändert von Matt am 21.01.2011 18:14:08, insgesamt 1-mal geändert.

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: C++ Operater << Problem

Beitrag von GoKi » 21.01.2011 18:07:16

Die Funktion writeSample ist nicht const deklariert:
Im header (cpp analog):

Code: Alles auswählen

void writeSample(ostream& strm=cout) const;
MfG GoKi
:wq

Benutzeravatar
Matt
Beiträge: 46
Registriert: 22.03.2004 15:38:36

Re: C++ Operater << Problem

Beitrag von Matt » 21.01.2011 18:13:50

Vielen Dank!! :) Es ist manchmal so einfach! :)

Antworten