SJJ*_*SJJ 0 c++ maps iterator compiler-errors operators
我是一个c ++菜鸟,我无法想出这个.我正在尝试使用模块参数作为键在地图中搜索值,如下所示.我得到的第一个错误是下面指示的行上的操作符等于不匹配,第二个错误是下面显示的行上的"期望的主要表达式"''令牌".
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;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!
您的会员功能已标记const.这意味着您在函数中访问的所有成员也是const合格的.这意味着当你调用find它时返回一个const_iterator而不是一个iterator.您可以使用它来修复它
map<string, float>::const_iterator p;
Run Code Online (Sandbox Code Playgroud)
甚至更容易
auto p = marks.find(module);
Run Code Online (Sandbox Code Playgroud)
至于抛出异常的错误,你应该创建一个抛出的对象.这意味着你需要扔throw NoMarkException();不throw (NoMarkException);
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |