Fehler passing 'const' as 'this' argument
Bin ich stecken auf einem Fehler, so lange nun, die folgenden, die ich bin zu lernen, und ich glaube, ich verstehe nicht den Fehler.
droid.cpp: In function ‘std::ostream& operator<<(std::ostream&, const Droid&)’:
droid.cpp:94:30: error: passing ‘const Droid’ as ‘this’ argument of ‘std::string
Droid::getId()’ discards qualifiers
[-fpermissive]
die Linie 94:
std::ostream& operator<<(std::ostream &os, Droid const & a)
os << "Droid '" << a.getId() << "', " << *a.getStatus() << ", " << a.getEnergy() << std::endl;
und hearders :
std::string getId();
Ich habe den gleichen Fehler für die 3 Anrufe in " - operator<<", ein.getId, ein.getStatus, ein.getEnergy.
Kann mir jemand erklären könnte, was mir der compiler sagen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie machen, die Methode
const
so kann man auf eineconst
Instanz oder über einconst
Referenz:Das gleiche würde gelten für alle
Droid
Methoden genannt instd::ostream& operator<<(std::ostream &os, Droid const & a)
.Werden Sie auch brauchen, um hinzuzufügen, die
const
in der Methode der definition.const
Bezug explizit.Müssen Sie
std::string getId() const;
. Andernfalls wird der compiler denktgetId()
ändern könnte die Instanz, die Sie nicht tun können, auf einemconst Droid&
. Das gleiche gilt fürgetStatus()
undgetEnergy()
.