Operator überladen, welcher Zugriff auf Member haben soll, die wiederum Objekte anderer Klassen sind
Hallo,
die Überschrift sagt glaube ich schon bisschen was aus^^ Hier mal der Code:
TPerson.cpp:
TPerson.h:
Bei "string name" meckert er nicht. Nur bei "TDate birthday" und "TAdress *adr". Bzw. in der .cpp meckert der Compiler...
Hier die Fehlermeldungen:
M:\Info_Vertiefung2\src\TPerson.cpp|62|error: 'birthday' was not declared in this scope|
M:\Info_Vertiefung2\src\TPerson.cpp|64|error: 'adr' was not declared in this scope|
Ich meine, dass kommt daher, da er während der Compilezeit nicht weiß ob diese Objekte existieren? Wobei es dann ja bei dem Zeiger auf TAdress funktionieren müsste?
Weiß jemand Rat? Währe sehr dankbar
VG
perterpa
die Überschrift sagt glaube ich schon bisschen was aus^^ Hier mal der Code:
TPerson.cpp:
...
ostream &operator<< (ostream &ostr, const TPerson &a)
{
ostr << a.name;
ostr <<" (";
ostr << birthday;
ostr<<")";
ostr << adr->a.print();
return ostr;
}
...
TPerson.h:
#include "M:\Info_Vertiefung2\include\TDate.h"
#include "M:\Info_Vertiefung2\include\TAdress.h"
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <sstream>
class TPerson
{
public:
TPerson();
TPerson(string inname,TAdress *inadr, TDate indate );
virtual ~TPerson();
//methoden
void print();
void load(string tmp);
friend ostream &operator<< (ostream &ostr, const TPerson &a);
protected:
string name;
TDate birthday;
TAdress *adr;
private:
};
#endif {{comment_single_line_double_slash:1}}
Bei "string name" meckert er nicht. Nur bei "TDate birthday" und "TAdress *adr". Bzw. in der .cpp meckert der Compiler...
Hier die Fehlermeldungen:
M:\Info_Vertiefung2\src\TPerson.cpp|62|error: 'birthday' was not declared in this scope|
M:\Info_Vertiefung2\src\TPerson.cpp|64|error: 'adr' was not declared in this scope|
Ich meine, dass kommt daher, da er während der Compilezeit nicht weiß ob diese Objekte existieren? Wobei es dann ja bei dem Zeiger auf TAdress funktionieren müsste?
Weiß jemand Rat? Währe sehr dankbar
VG
perterpa
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 341881
Url: https://administrator.de/contentid/341881
Ausgedruckt am: 01.11.2024 um 02:11 Uhr
2 Kommentare
Neuester Kommentar
Erst mal funktioniert
Grüße
rubberman
name
weil du mit dem vorangestellten a.
spezifiziert hast dass es ein Member von a ist. Mindestens das solltest du also auch bei birthday
und adr
tun. Sollte aber der ostream-Operator << für bspw. die Klasse TDate nicht auch überladen sein, geht's trotzdem in die Hose. Und was deine Memberfunktion print() macht, wäre noch die Frage Grüße
rubberman