1

私は正常に動作するこの(簡略化された)コードを持っていました。

class T
{
    map<string, int>* m;
public:    

    T()
    {
        m = new map<string, int>();
    }
    void get(const string& key, int& val) const
    {
        val = (*m)[key];
    }
}

ポインターを値に変更すると、

class T
{
    map<string, int> m;
public:    

    void get(const string& key, int& val) const
    {
        val = m[key];
    }

};

このエラー メッセージが表示されました。何が問題なのですか?

In member function 'void T::get(const string&, int&) const':
constTest.cpp:12:20: error: passing 'const std::map<std::basic_string<char>, int>' 
as 'this' argument of 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& ...' 
discards qualifiers [-fpermissive]
         val = m[key];
                    ^
4

2 に答える 2