Komisches std::string Problem



  • Hey Leute.
    Ich laber hier mal net lange rum.^^

    Folgender Code:

    #include <iostream>
    #include <string>
    using namespace std;
    
    void CallTheString(string* STRING); // Funktioniert, wenn ich daraus eine
                                        // normale variable mache.
    
    int main()
    {
        CallTheString("Ein String!");
    
        return 0;
    }
    
    void CallTheString(string* STRING)
    {
        cout << STRING << endl;
    }
    

    Folgende Fehlermeldung:

    cannot convert `const char*' to `std::string*' for argument `1' to `void CallTheString(std::string*)'|

    An hand der meldung sehe ich das er dadran fehlschlägt ein char in einen string zu Konvertieren, da die Funktion einen string erwartet und keinen char.

    Jedoch wenn ich aus dem Parameter STRING eine normale Variable mache funktioniert es. Warum funktioniert das nicht wenn STRING ein Zeiger ist?

    Mfg Wikinger75!



  • Wikinger75 schrieb:

    Jedoch wenn ich aus dem Parameter STRING eine normale Variable mache funktioniert es. Warum funktioniert das nicht wenn STRING ein Zeiger ist?

    Weil C++ keine implizite Konvertierung von const char* nach std::string* erlaubt.

    Deklarier den Parameter als Const-Referenz, dann kannst du dank dem impliziten Konstruktor std::string(const char*) auch Stringliterale übergeben:

    void CallTheString(const std::string& String); // oder äquivalent:
    void CallTheString(std::string const& String);
    


  • Wieso nimmst du denn einen Zeiger?
    Du kannst eben nicht einfach ein const char* in einen Zeiger auf string konvertieren.
    string selber hat aber einen Konstruktor der const char* übernimmt, also geht es wenn du string als Parameter nimmst (am besten als konstant Referenz).



  • Danke für die schnelle Antwort!^^

    Mfg Wikinger75!


Anmelden zum Antworten