有人可以解释为什么下面的代码编译失败,消息“传递'const apple'作为'int apple :: foo()的'this'参数'丢弃限定词”,以及如何解决它。
public class A extends S {
private S successor;
}
public class B extends S {
private S successor;
}
public class C extends S {
private S successor;
}
答案 0 :(得分:4)
适用于我:(在foo()结束时添加const;在球类结束时添加;) class apple是std :: map中的一个键,它被声明为const:typedef pair value_type;所以访问键也应该声明为const。
#include <map>
#include <iostream>
using namespace std;
class apple{
private:
int a,b,c,d;
public:
int foo() const {
return a+b+c+d;
}
};
class ball{
private:
map<apple,string> mp;
public:
void foo2(){
for(map<apple,string>::iterator it = mp.begin();it!=mp.end();++it){
cout<<it->first.foo()<<endl;
}
}
};
int main(int argc, char** argv) {
return 0;
}