Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 非标准语法;使用'&';创建指向成员C++;_C++_Function_Pointers_Vector - Fatal编程技术网

C++ 非标准语法;使用'&';创建指向成员C++;

C++ 非标准语法;使用'&';创建指向成员C++;,c++,function,pointers,vector,C++,Function,Pointers,Vector,我在运行我的一小段代码时遇到问题。 我有一个从用户输入读取温度的向量。我想稍微处理一下数据。给出哪一天(热天、夏日等)以及哪一天最热。 但每次我想用函数maxNumber获得最高温度时,我都会得到两个错误,我不明白: non-standard syntax; use '&' to create a pointer to member "! =": Function overload cannot be resolved 请帮忙!非常感谢 代码: #包括 #包括 s

我在运行我的一小段代码时遇到问题。 我有一个从用户输入读取温度的向量。我想稍微处理一下数据。给出哪一天(热天、夏日等)以及哪一天最热。 但每次我想用函数maxNumber获得最高温度时,我都会得到两个错误,我不明白:

non-standard syntax; use '&' to create a pointer to member

"! =": Function overload cannot be resolved
请帮忙!非常感谢

代码:

#包括
#包括
std::string klimaTag(浮点a){
如果(a>=25和a<30){
返回“Sommertag”;
}
如果(a>=30和a<35)为else{
返回“Heißer标签”;
}
如果(a>=35),则为else{
返回“Wüstentag”;
}
否则{
返回“Normaltag”;
}
}
浮点最大数(标准::向量&a){
浮动电流_max=0;
for(int i=a.begin;i!=a.end;i++){
如果(a.at(i)>当前最大值){
电流_max=a.at(i);
}
返回电流_max;
}
}
int main()
{
病媒温度;
浮动电流温度;
对于(int i=0;i<5;i++){

std::cout
a.end
指函数地址,需要使用
a.end()调用函数本身
因此,对非标准语法的抱怨,就好像你想取你可以调用的函数地址
&a.end
。与
a.begin
相同
a.end
指的是函数地址,你需要用
a.end()调用函数本身
因此,对非标准语法的抱怨,就好像你想获取你可以调用的函数地址
&a.end
。与
a.begin
一样,要使用你描述的for循环,你需要
int i=0;i
。此外,
return
语句位于maxNumber中的for循环内。这不是您想要的(它在第一个循环中退出),请将其置于外部


Begin和end实际上是使用迭代器的方法。要使用它们,您应该对循环进行一些更改。

要像您所描述的那样使用for循环,您需要
int i=0;i
。而且
return
语句位于maxNumber中的for循环内。这不是您想要的(它在第一个循环中退出),把它放在外面


Begin和end实际上是使用迭代器的方法。要使用它们,您应该稍微更改循环。

Begin
end
是需要像函数一样调用的函数:
Begin()
end()
。 但是,可以使用基于范围的循环,如:

float maxNumber(标准::向量&a){
浮动电流_max=0;
用于(自动常数i:a){
如果(i>当前最大值){
电流_max=i;
}
}
返回电流_max;
}

请注意我把返回语句放在哪里。它在for循环之外。

begin
end
是需要像函数一样调用的函数:
begin()
end()
。 但是,可以使用基于范围的循环,如:

float maxNumber(标准::向量&a){
浮动电流_max=0;
用于(自动常数i:a){
如果(i>当前最大值){
电流_max=i;
}
}
返回电流_max;
}
请注意我把return语句放在哪里了。它在for循环之外。

首先
begin()
end()
是方法,所以你会得到这个错误,因为你试图引用一个函数,所以它应该需要一个地址操作符

第二个是
begin()
end()
返回一个
迭代器,而不是索引,您正在清除试图访问类似索引的内容

第三件事是你总是在第一个周期后返回,因为你的返回在它里面,应该在外面

要正确循环,数组就足以使用for循环范围

float maxNumber(std::vector<float> &a) {
    float current_max = 0;
    for(const auto& element : a) {
     if(element > current_max){
            current_max = element; 
        }
    }
    return current_max;
}
float maxNumber(标准::向量&a){
浮动电流_max=0;
用于(常量自动和元素:a){
如果(元素>当前最大值){
当前_max=元素;
}
}
返回电流_max;
}
如果你想用老办法,你可以一直这样做

float maxNumber(std::vector<float> &a) {
    float current_max = 0;
    for(int i=0; i<a.size(); ++a) {
     if(a.at(i) > current_max){
            current_max = a.at(i); 
        }
    }
    return current_max;
}
float maxNumber(标准::向量&a){
浮动电流_max=0;
用于(int i=0;i当前_max){
电流_max=a.at(i);
}
}
返回电流_max;
}
首先,
begin()
end()
是方法,因此您会遇到该错误,因为您试图引用函数,因此它应该需要一个地址运算符

第二个是
begin()
end()
返回一个
迭代器,而不是索引,您正在清除试图访问类似索引的内容

第三件事是你总是在第一个周期后返回,因为你的返回在它里面,应该在外面

要正确循环,数组就足以使用for循环范围

float maxNumber(std::vector<float> &a) {
    float current_max = 0;
    for(const auto& element : a) {
     if(element > current_max){
            current_max = element; 
        }
    }
    return current_max;
}
float maxNumber(标准::向量&a){
浮动电流_max=0;
用于(常量自动和元素:a){
如果(元素>当前最大值){
当前_max=元素;
}
}
返回电流_max;
}
如果你想用老办法,你可以一直这样做

float maxNumber(std::vector<float> &a) {
    float current_max = 0;
    for(int i=0; i<a.size(); ++a) {
     if(a.at(i) > current_max){
            current_max = a.at(i); 
        }
    }
    return current_max;
}
float maxNumber(标准::向量&a){
浮动电流_max=0;
用于(int i=0;i当前_max){
电流_max=a.at(i);
}
}
返回电流_max;
}

Try begin()和end()with()…Try begin()和end()with()…当然,
std::max_元素
为您完成大部分工作+1.在
for
循环中,您知道
i
是一个有效的索引,因为您是这样编写的。在(i)
@PeteBecker处使用
不需要额外的开销,我只是使用了他相同的语法是的,我知道。这还是太过分了。当然,
std::max_element
为您完成了大部分工作+1.在
for
循环中,您知道
i
是一个有效的索引,因为您是在