Bing碎冰 2022-01-15 17:36 采纳率: 83.3%
浏览 105
已结题

c++ 编译器没报错但是poj编译错误


#include <iostream>
#include <queue>
using namespace std;
char a[22][22];
int turn[4][2] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}};
typedef struct m
{
    int x, y;
} ob;
int main()
{
    int w, h;
    while (cin >> w >> h)
    {
        ob st;
        for (int i = 1; i <= h; i++)
        {
            getchar();
            for (int j = 1; j <= w; j++)
            {
                cin >> a[i][j];
                if (a[i][j] == '@')
                {
                    st.x = j, st.y = i;
                }
            }
        }
        int sum = 1;
        queue<ob> line;
        line.push(st);
        a[line.front().y][line.front().x] = 0;
        do 
        {
           

            for (int i = 0; i < 4; i++)
            {
                if (a[line.front().y + turn[i][1]][line.front().x + turn[i][0]] == '.') 
                {                                                                       
                    line.push({line.front().x + turn[i][0], line.front().y + turn[i][1]});
                    a[line.front().y + turn[i][1]][line.front().x + turn[i][0]] = 0;
                    sum++;
                }
            }
            line.pop();
        } while (line.size());
        cout << sum<<endl;
    }
    return 0;
}

附上oj信息:
Compile Error

Main.cpp
F:\temp\23176735.14851\Main.cpp(40) : error C2143: syntax error : missing ')' before '{'
F:\temp\23176735.14851\Main.cpp(40) : error C2660: 'std::queue<_Ty>::push' : function does not take 0 arguments
with
[
_Ty=ob
]
F:\temp\23176735.14851\Main.cpp(40) : error C2143: syntax error : missing ';' before '{'
F:\temp\23176735.14851\Main.cpp(40) : error C2143: syntax error : missing ';' before '}'
F:\temp\23176735.14851\Main.cpp(40) : error C2059: syntax error : ')'

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-15 20:09
    关注

    因为在第40行你用C++11语法line.push({ ... })使用初始化列表创建结构体,目前主流C++编译默认支持C++11。似乎你们POJ系统仍然默认C++03,而不是C++11。
    你可以把那行修改为

    ob s = {line.front().x + turn[i][0], line.front().y + turn[i][1]};
    line.push(s);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月23日
  • 已采纳回答 1月15日
  • 创建了问题 1月15日

悬赏问题

  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播