peterpa
Goto Top

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:
...
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 face-smile

VG
perterpa

Content-ID: 341881

Url: https://administrator.de/contentid/341881

Ausgedruckt am: 01.11.2024 um 02:11 Uhr

rubberman
Lösung rubberman 28.06.2017 um 17:42:16 Uhr
Goto Top
Erst mal funktioniert 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 face-wink

Grüße
rubberman
peterpa
peterpa 28.06.2017 aktualisiert um 17:50:25 Uhr
Goto Top
Ahhhhh Fu** ... der Wald und die Bäume... saß wohl wieder zu lang dran...

Danke erstmal probiere ich morgen als erstes aus xD