Als ich meinen C++ Code mit GCC 4.3 zum ersten Mal kompiliert habe (nachdem ich ihn ohne Warnungen auf 4.1, 4.0, 3.4 mit den -Wall -Wextra
Optionen kompiliert habe), bin ich plötzlich gekommen eine Reihe von Fehlern der Form warning: type qualifiers ignored on function return type
.Pedantic gcc Warnung: Typ Qualifier auf Funktion Rückgabetyp
Betrachten temp.cpp
:
class Something
{
public:
const int getConstThing() const {
return _cMyInt;
}
const int getNonconstThing() const {
return _myInt;
}
const int& getConstReference() const {
return _myInt;
}
int& getNonconstReference() {
return _myInt;
}
void setInt(const int newValue) {
_myInt = newValue;
}
Something() : _cMyInt(3) {
_myInt = 2;
}
private:
const int _cMyInt;
int _myInt;
};
g++ temp.cpp -Wextra -c -o blah.o
Laufen:
temp.cpp:4: warning: type qualifiers ignored on function return type
temp.cpp:7: warning: type qualifiers ignored on function return type
Kann mir jemand sagen, was ich falsch mache, dass die C++ Standard verletzt? Ich nehme an, dass bei der Rückgabe nach Wert der führende const
überflüssig ist, aber ich habe Probleme zu verstehen, warum es notwendig ist, eine Warnung damit zu generieren. Gibt es noch andere Orte, wo ich die Const verlassen sollte?
Ähnliche Fragen und Antworten finden: http://stackoverflow.com/questions/1607188/why-is-type-qualifier-on-return-type-is-meaningless –
Ich habe solche Warnungen schon einmal gesehen Ich habe mehrere Minuten damit verbracht zu verstehen, was in meinem Code vor sich ging. Wahrscheinlich würde eine bessere Fehlerberichterstattung die Dinge beschleunigen. Anstelle von 'warning: type qualifiers wird bei der Funktion 'return type' ignoriert, so etwas wie' warning: Bitte fügen Sie kein const-Qualifikationsmerkmal hinzu, wenn Sie nach Wert zurückgeben'. – Avio