tommyyu 发表于 2022-7-31 11:11:52

为什么在洛谷上运行就会报错

题目地址:https://www.luogu.com.cn/problem/P5728

我的代码:#include<iostream>
#include<cmath>
using namespace std;
struct student{            //定义一个学生结构体
        int ch, ma, en;
        int al;
};
bool is_same(student a, student b)               //判断是否是"旗鼓相当的对手"
{
        if(abs(a.ch-b.ch) > 5) return false;
        if(abs(a.ma-b.ma) > 5) return false;
        if(abs(a.en-b.en) > 5) return false;
        if(abs(a.al-b.al) >10) return false;
        return true;
}
int main()
{
        int n; cin>>n;
        student x;
        for(int i=0; i<n; ++i)                                       //输入数据
        {
                int t1, t2, t3;
                cin>>t1>>t2>>t3;
                x.ch = t1; x.ma = t2; x.en = t3;
                x.al = t1+t2+t3;
        }
        int count = 0;
        for(int i=0; i<n; ++i)                                        //判断有多少组"旗鼓相当的对手"
                for(int j=0; j<i; ++j)
                        if(is_same(x, x)) count++;
        cout<<count;
        return 0;
}
在本地运行没有任何问题,但是提交上去就会显示编译错误,请问是怎么回事

dolly_yos2 发表于 2022-7-31 11:53:26

报错信息很明显了,引用有歧义, is_same 这个符号在同一命名空间里出现重名了:标准上自 C++11 开始,标准库中已经定义了 std::is_same 这一符号。
所以需要尝试更改函数名,只从 std 命名空间引入使用的符号,或者指明调用的 is_same 的命名空间归属。
至于为什么本地能正常编译,可能和您在本地具体使用的编译器有关。

柿子饼同学 发表于 2022-7-31 13:09:08

我也打洛谷 , 要不互关一下?{:10_277:}

tommyyu 发表于 2022-7-31 16:33:02

柿子饼同学 发表于 2022-7-31 13:09
我也打洛谷 , 要不互关一下?

蛤?洛谷还有关注功能
页: [1]
查看完整版本: 为什么在洛谷上运行就会报错