Tanelorn.net
Medien & Phantastik => Multimedia => Multimedia - Software & Betriebsysteme => Thema gestartet von: Spicy McHaggis am 13.08.2008 | 22:05
-
also ich... ;)
ich versuche in einer Klassen den Operator << zu überladen.
#include "stdafx.h"
using namespace std;
class Mitarbeiter
{
private:
string nachname, vorname;
int Geburtstag, Geburtsmonat, Geburtsjahr;
public:
Mitarbeiter();
Mitarbeiter(string vorname, string nachname, int tag, int monat, int jahr);
friend ostream &operator << (ostream &os, Mitarbeiter &m);
virtual ~Mitarbeiter();
};
Der Rumpf sieht dann so aus...
// Mitarbeiter.cpp: Implementierung der Klasse Mitarbeiter.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Mitarbeiter.h"
//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////
Mitarbeiter::Mitarbeiter()
{}
Mitarbeiter::Mitarbeiter(string vorname, string nachname, int tag, int monat, int jahr)
{
this->vorname=vorname;
this->nachname=nachname;
if((tag < 1) || (tag > 31))
{
this->Geburtstag=1;
}
else
{
this->Geburtstag=tag;
}
if((monat < 1)||(monat > 12))
{
this->Geburtsmonat=1;
}
else
{
this->Geburtsmonat=monat;
}
this->Geburtsjahr=jahr;
}
ostream &operator <<(ostream &os, Mitarbeiter m)
{
os << m.vorname << " " << m.nachname << " Geburtstag: " << m.Geburtstag << "." << m.Geburtsmonat;
return os;
}
Mitarbeiter::~Mitarbeiter()
{}
Trotz der Friend - Deklaration kriege ich eine Compilermeldung, dass nicht auf die privaten Elemente von Mitarbeiter zugegriffen werden könnte. Was mache ich falsch? :-\
-
Du Spaßvogel hast ein & vergessen. Schau mal genau hin... ;)
-
hmmm... meinst du (...,Mitarbeiter &m) ?
Das hab ich gerade behoben, gibt aber immer noch die selben Fehler...
Mitarbeiter.cpp(48) : error C2248: "vorname" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "Mitarbeiter" erfolgte mitarbeiter.h(19) : Siehe Deklaration von 'vorname'
Mitarbeiter.cpp(48) : error C2248: "nachname" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "Mitarbeiter" erfolgte
mitarbeiter.h(19) : Siehe Deklaration von 'nachname'
Mitarbeiter.cpp(48) : error C2248: "Geburtstag" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "Mitarbeiter" erfolgte
mitarbeiter.h(20) : Siehe Deklaration von 'Geburtstag'
Mitarbeiter.cpp(48) : error C2248: "Geburtsmonat" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "Mitarbeiter" erfolgte
mitarbeiter.h(20) : Siehe Deklaration von 'Geburtsmonat'
-
Glaube ich dir nicht. Bei mir läufts, habe ich gerade ausprobiert.
PS: Nimm mal das stdafx.h aus der Headerdatei raus, das hat da nämlich so überhaupt nix zu suchen.
-
Unter Visual Studio 6.0 will er nach wie vor nicht, aber unter Dev-C++ gehts... danke! :)