对象作为映射的关键变为cpp中的const

时间:2018-02-09 21:48:20

标签: c++ c++11

有人可以解释为什么下面的代码编译失败,消息“传递'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;
}

1 个答案:

答案 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;
}