Codebeispiel läßt sich nicht kompilieren



  • Ich bin momentan dabei mich in C++ einzuarbeiten, dazu benutze ich das Onlinebuch OopDocbook. Unter dem ersten Kapitel "C++ Standard Library strings" findet sich folgendes Beispiel:

    #include <string>
    #include <iostream>
    
    int main() {
        using namespace std;
        string s1("This "), s2("is a "), s3("string.");
        s1 += s2;  /* concatenation */
        string s4 = s1 + s3;
        cout << s4 << endl;
    
        string s5("The length of that string is: ");
        cout << s5 << s4.length << " characters." << endl;
    
        cout << "Enter a sentence: " << endl;
        getline(cin, s2);
        cout << "Here is your sentence: \n" << s2 << endl;
        cout << "The length of it was: " << s2.length() << endl;
        return 0;
    }
    

    Wenn ich dieses Beispiel unter Code:Blocks kompilieren möchte, kommt bei der Zeile "cout << s5 << s4.length << " characters." << endl;" eine Fehlermeldung. "Error: no match for 'operator<<' in 'std::operator<< ...".

    Wenn ich jedoch s4.length samt dem einen << rausnehme, geht es. Könnte mir vielleicht jemand bitte sagen was da falsch läuft? Ist das Beispiel nicht richtig oder liegt's an meinem Compiler und wenn ja, wie könnte ich das abändern?

    Danke!
    Tsunami



  • Da muss

    cout << s5 << s4.length() << " characters." << endl;
    

    hin. Beachte die Klamern hinter s4.length, also s4.length**()**, da es ein Funktionsaufruf ist.



  • Jetzt wo du es sagst, sehe ich es auch.
    Ist natürlich ein Ding das solch ein Fehler in dem Tutorial drin ist.

    Vielen Dank für die schnelle Hilfe!!


Anmelden zum Antworten