const string &mein_string (geht nicht)



  • Hallo ihr da draussen,

    ich bin recht neu im C++ Umfeld. Also habt mir mir ein Nachsehen 😉
    Bisher habe ich meine Funktionen immer nach folgendem Muster "deklariert".

    int meinefunktion( string meinstring );

    Klar - rückgabewert usw war nicht immer int... aber ich habe immer die funktion eine Kopie des strings erstellen lassen. Vor ein paar Tagen hat mich ein C++'er darauf aufmerksam gemacht, dass es gut wäre die Funktion so zu deklarieren:

    int meinefuntkion( const string &meinstring );

    Hier hat man den Vorteil, dass nur eine Referenz übergeben wird, und dann man auch die funktion dann wenn sie mal fertig ist so aufrufen kann:

    meinefunktion("hallo");

    was für mich von wichtiger bedeutung ist.
    Ich habe also angefangen die "alten" parameter meiner funtktionen zu ersetzten.

    Alt:
    int strReplace( string &stringToReplace, string stringReplaceWhat, string stringReplaceWith );

    neu:
    int strReplace( const string &stringToReplace, const string &stringReplaceWhat, const string &stringReplaceWith )

    Resultat:
    from method.cpp:1:
    /usr/lib/flib/fapplication.cpp: In function int strReplace(const std::string&, const std::string&, const std::string&)': /usr/lib/flib/fapplication.cpp:44: error:splitStringInVector' undeclared
    (first use this function)
    /usr/lib/flib/fapplication.cpp:44: error: (Each undeclared identifier is
    reported only once for each function it appears in.)
    /usr/lib/flib/fapplication.cpp:48: error: passing `const std::string' as `this'
    argument of std::basic\_string<\_CharT, \_Traits, \_Alloc>& std::basic\_string<\_CharT, \_Traits, \_Alloc>::operator=(const _CharT*) [with \_CharT = char, \_Traits = std::char\_traits<char>, \_Alloc = std::allocator<char>]' discards qualifiers /usr/lib/flib/fapplication.cpp:58: error: passing \const std::string' as `this'
    argument of std::basic\_string<\_CharT, \_Traits, \_Alloc>& std::basic\_string<\_CharT, \_Traits, \_Alloc>::append(const std::basic\_string<\_CharT, \_Traits, \_Alloc>&) [with \_CharT = char, \_Traits = std::char\_traits<char>, \_Alloc = std::allocator<char>]' discards qualifiers /usr/lib/flib/fapplication.cpp:61: error: passing \const std::string' as `this'
    argument of std::basic\_string<\_CharT, \_Traits, \_Alloc>& std::basic\_string<\_CharT, \_Traits, \_Alloc>::append(const std::basic\_string<\_CharT, \_Traits, \_Alloc>&) [with \_CharT = char, \_Traits = std::char\_traits<char>, \_Alloc = std::allocator<char>]' discards qualifiers /usr/lib/flib/fapplication.cpp:64: error: passing \const std::string' as `this'
    argument of std::basic\_string<\_CharT, \_Traits, \_Alloc>& std::basic\_string<\_CharT, \_Traits, \_Alloc>::append(const std::basic\_string<\_CharT, \_Traits, \_Alloc>&) [with \_CharT = char, \_Traits = std::char\_traits<char>, \_Alloc = std::allocator<char>]' discards qualifiers /usr/lib/flib/fapplication.cpp: In member functionvoid
    FApplication::optimizeString(const std::string&)':
    /usr/lib/flib/fapplication.cpp:276: error: passing const std::string' as \this' argument of `std::basic_string<_CharT, _Traits, _Alloc>&
    std::basic_string<_CharT, _Traits, _Alloc>::operator=(const
    std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits =
    std::char_traits<char>, _Alloc = std::allocator<char>]' discards qualifiers

    An was kann das liegen? ich ändere doch nur die Parameter...



  • du kannst einen const string nicht mehr verändern, also wenn
    du da so eine art Suchen und Ersetzen hast, das wird so nicht
    funktionieren, da deine Parameter const sind.

    Devil


Anmelden zum Antworten