Poo*_*rna 2 c++ compiler-errors
在下面我得到错误错误:请求'*it'中的成员'get_id',这是非类型'const Param*const'.下面的代码有什么问题
bool SomeParams::is_default(int _id) const
{
vector<const Param*> param_list;
bool is_default = false;
if( get_default_params(param_list) ) // This populates param_list
{
vector<const Param*>::const_iterator it = param_list.begin();
for(;it!=param_list.end();++it)
{
if( *it->get_id() == _id ) // get_id is function in Param object
{
is_default = true;
break;
}
}
}
return is_default;
}
Run Code Online (Sandbox Code Playgroud)
->(即成员访问运营商)的优先级高于*(即间接运营商),因此
*it->get_id();
Run Code Online (Sandbox Code Playgroud)
被解释为:
*(it->get_id());
Run Code Online (Sandbox Code Playgroud)
这会导致编译错误.
你需要的是这个:
(*it)->get_id();
Run Code Online (Sandbox Code Playgroud)
见表:
两个要点:
函数的参数名称以_,根据语言规范,调用未定义的行为.以下划线开头的名称是保留的.不要使用它们.
函数的名称是is_default,函数内部有一个变量,也是is_default.为什么不为变量选择不同的名称?这样可以提高代码的可读性.