#include <iostream>
#include <set>
using namespace std;
class StudentT {
public:
int id;
string name;
public:
StudentT(int _id, string _name) : id(_id), name(_name) {
}
int getId() {
return id;
}
string getName() {
return name;
}
};
inline bool operator< (StudentT s1, StudentT s2) {
return s1.getId() < s2.getId();
}
int main() {
set<StudentT> st;
StudentT s1(0, "Tom");
StudentT s2(1, "Tim");
st.insert(s1);
st.insert(s2);
set<StudentT> :: iterator itr;
for (itr = st.begin(); itr != st.end(); itr++) {
cout << itr->getId() << " " << itr->getName() << endl;
}
return 0;
}
Im Einklang:
cout << itr->getId() << " " << itr->getName() << endl;
Er gibt eine Fehlermeldung aus:
../main.cpp:35: Fehler: Übergabe von 'const StudentT' als 'this' Argument von 'int StudentT::getId()' verwirft Qualifier
../main.cpp:35: Fehler: Übergabe von 'const StudentT' als 'this' Argument von 'std::string StudentT::getName()' verwirft Qualifier
Was ist an diesem Code falsch? Ich danke Ihnen!
15 Stimmen
Wo befindet sich Zeile 35 in Ihrem Codeschnipsel?
145 Stimmen
Ich wünschte, GCC würde diese Fehlermeldung verbessern, z.B. "discards qualifiers" -> "breaks const correctness"
15 Stimmen
@jfritz42: Das wäre verwirrend für den Fall, dass es verworfen wird.
volatile
5 Stimmen
@PlasmaHH würde die Fehlermeldung in "bricht die Korrektheit von const" und "bricht die Korrektheit von volatile" aufgeteilt werden. Nun, nicht viele Leute werden darüber nachdenken, dass etwas flüchtig korrekt