2017-01-05 5 views
0

私はC++のnoobです。私はこれを理解できません。私はマップで、以下のようにキーとしてモジュールパラメータを使用して値を検索しようとしています。私が得る最初のエラーは、以下に示す行の演算子が等しいかどうかの一致ではなく、2番目のエラーは、以下に示す行の「予想される1次式の前の」)トークン」です。マップ内の値を検索するときに 'operator ='と一致しません。

float Student::getMark(const string &module) const throw (NoMarkException){ //TODO 
    map<string, float>::iterator p; 
    p = marks.find(module); //no match for operator= 
    if(p != marks.end()) 
     return p->second; 
    else 
     throw (NoMarkException); //expected primary-expression before ')' token 
    return 0.0; 
} 

任意の助けもいただければ幸いです!

答えて

6

メンバーの機能にはconstが表示されます。つまり、この機能でアクセスするすべてのメンバーはconstとなります。つまり、findに電話すると、iteratorの代わりにconst_iteratorが返されます。あなたがスローするオブジェクトを作成しなければならない例外をスローすると、あなたの誤差限り

auto p = marks.find(module); 

でさえ

map<string, float>::const_iterator p; 

または容易に使用することによってそれを修正することができます。それはあなたがスローする必要があることを意味するthrow NoMarkException();throw (NoMarkException);

関連する問題