#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;
}
在行的 '本' 的說法:錯誤:XXX傳遞作爲XXX丟棄預選賽
cout << itr->getId() << " " << itr->getName() << endl;
它給出一個錯誤:
../main.cpp:35: error: passing 'const StudentT' as 'this' argument of 'int StudentT::getId()' discards qualifiers
../main.cpp:35: error: passing 'const StudentT' as 'this' argument of 'std::string StudentT::getName()' discards qualifiers
有什麼不對的代碼?謝謝!
代碼片段中的第35行在哪裏? – 2011-05-12 04:54:35
我希望GCC能改善這個錯誤信息,例如「拋棄限定符」 - >「打破常量正確性」 – jfritz42 2013-10-08 22:06:13
@ jfritz42:會拋棄volatile volatile的 – PlasmaHH 2013-12-09 15:40:30