000
01.06.2006, 09:55 Uhr
~ka
Gast
|
Hi,
ich habe folgenden Code geschrieben, der beim Auslösen einer Exception ("z.B.: throw Entleih_ERROR(12,1)") eine Fehlermeldung erzeugen soll.
Nur erhalte ich beim kompilieren immer diese Fehlermeldung:
Zitat: |
"std::basic_ios<_Elem,_Traits>::basic_ios": Kein Zugriff auf private Member, dessen Deklaration in der std::basic_ios<_Elem,_Traits>-Klasse erfolgte.
|
Ich verwende MS Visual Studio 2005, falls euch das hilft.
Folgender Code funktioniert nicht:
C++: |
#include <string> #include <sstream> using namespace std;
class Entleih_ERROR { ostringstream fehlertext;
public: Entleih_ERROR(int signatur, int fehlernr); string text() { return fehlertext.str();} };
Entleih_ERROR::Entleih_ERROR(int signatur, int fehlernr) { if (fehlernr) fehlertext << "\nFehler bei der Ruecknahme von Signatur: "; else fehlertext << "\nFehler bei der Ruecknahme von Signatur: "; fehlertext << signatur << "\n\n"; }
|
Ändere ich den Code ab, sodass ich das ostringstream-Objekt nur lokal im Konstruktor verwende, dann funktioniert es. Warum auch immer?!
C++: |
#include <string> #include <sstream> using namespace std;
class Entleih_ERROR { string fehlertext;
public: Entleih_ERROR(int signatur, int fehlernr); string text() { return fehlertext;} };
Entleih_ERROR::Entleih_ERROR(int signatur, int fehlernr) { ostringstream s; if (fehlernr) s << "\nFehler bei der Ruecknahme von Signatur: "; else s << "\nFehler bei der Ruecknahme von Signatur: "; s << signatur << "\n\n"; fehlertext = s.str(); }
|
Schon mal danke im voraus!! |