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 functionint 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 ofstd::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 ofstd::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 ofstd::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 ofstd::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 function
void
FApplication::optimizeString(const std::string&)':
/usr/lib/flib/fapplication.cpp:276: error: passingconst 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 qualifiersAn 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