Anfängerfrage: Warum bekomme ich hier keine Adresse
-
Ich habe folgendes kleines Programm
// spielzeug.h #include <iostream> #include <string> using namespace std; #ifndef __SPIELZEUG_H__ #define __SPIELZEUG_H__ class Spielzeug { private: string gegenstand01; char *gegenstand02; public: Spielzeug(string, char*); char* getGegenstand02(); }; #endif
// spielzeug.cpp #include <iostream> #include "test.h" using namespace std; Spielzeug::Spielzeug(string g1, char* g2) : gegenstand01(g1), gegenstand02(g2) { } char* Spielzeug::getGegenstand02() { return this->gegenstand02; }
// main.cpp #include <iostream> #include <string> #include "test.h" using namespace std; int main() { Spielzeug Hans("Fussball", "Football"); cout << Hans.getGegenstand02() << endl; }
Warum bekomme ich bei cout (cout << Hans.getG...) keine Adresse zurückgeliefert?
Laut der Definition/Deklaration von getGegenstand02() kommt doch da ein Pointer zurück.
-
Weil operator<< char* als eine Zeichenkette interpretiert und diese ausgibt, bis er auf '\0' stößt. Mach stattdessen
cout << static_cast<void*>( Hans.getGegenstand02() ) << endl;
-
out schrieb:
Weil operator<< char* als eine Zeichenkette interpretiert und diese ausgibt, bis er auf '\0' stößt. Mach stattdessen
cout << static_cast<void*>( Hans.getGegenstand02() ) << endl;
Danke