繁体   English   中英

错误是:对“max”的引用不明确

[英]The error is: reference to 'max' ambiguous

我的 function 出了点问题:

#include<iostream>

using namespace std ;
int max=1;
int lcm(int i){
    if(max%i==0){
    }
    else 
        for (int b=2; b<=i ; b++){
            max*=b;
            max/=(b-1);
            if(max%i==0){
                break;
            }
        }
    }
int main(){
int n;
cin>>n;
int i[n];
for(int j =0 ; j<n; j++){
    cin>>i[j];
    lcm(i[j]);
}
cout<<max+1;
}

这个程序给了我几个数字的 lcm。

当我的代码中有这个问题时,我在 python 中使用 global

或者我应该让我的代码更好?

当您使用using namespace std时会发生这种情况,您的变量max不明确,因为它与std::max库 function 冲突。

不要使用using namespace std ,而是使用std::cinstd::cout等,或者至少使用特定的using表达式,例如using std::cin; .

您也可以更改变量的名称,但仍应遵循之前关于良好编码实践的注意事项。

另一件事,关于int i[n]; 可变长度 arrays 不是 C++ 标准的一部分,尽管某些编译器允许这样做,但您可能希望使用std::vector代替。

最后, 正如@Botje 指出的那样,使用具有非空返回类型且缺少返回语句的 function 会导致未定义的行为。

这是您永远不应该using namespace std; . 如果你这样做,它会引入 std 中的所有名称,其中包括 function std std::max 这与变量int max冲突,会给您带来歧义错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM