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


Log in to reply