gpt4 book ai didi

C++ 编译错误非类类型

转载 作者:太空狗 更新时间:2023-10-29 23:47:18 25 4
gpt4 key购买 nike

在下面,我得到的错误是错误:在'* 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;
}

最佳答案

->(即成员访问操作符)的优先级高于*(即间接操作符),所以

*it->get_id();

被解释为:

*(it->get_id()); 

导致编译错误。

你需要的是:

(*it)->get_id();

查看此表:


两个要点:

  • 函数的参数名称以_开头,根据语言规范,调用未定义的行为。以下划线 开头的名称是保留的。不要使用它们。

  • 函数名是is_default,函数内部有一个变量,也是is_default。为什么不为变量选择不同的名称?这将增加代码的可读性。

关于C++ 编译错误非类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com