鱼C论坛

 找回密码
 立即注册
查看: 2265|回复: 10

[已解决]这段代码为什么报错

[复制链接]
发表于 2022-7-29 09:51:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问这一段代码为什么报错,怎么改正,谢谢
最佳答案
2022-7-29 13:02:40
仔细读一下报错信息,您代码中的变量名和标准库中的符号重名了。在命名空间 std 里已经定义了符号 right 和 count ,因此编译器无法确定您指代的是哪一个 right 或 count 。
修改方法:或者给变量换个名字,或者不要使用只从 std 引入需要的符号,或者显式指明 count 和 right 的所属命名空间。
屏幕截图 2022-07-29 094819.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-7-29 10:04:13 | 显示全部楼层
本帖最后由 jackz007 于 2022-7-29 10:06 编辑
  1. struct lottery {
  2.       int x[7] ;  
  3. }
  4. . . . . . .
  5. void c(lottery abc)
复制代码

      标识符 lottery 没有使用 typedef 定义过,所以,不可以这样定义数据类型
      你只要这样定义结构:
  1. typedef struct LOTTERY {
  2.       int x[7] ;  
  3. } lottery ;
复制代码

      即可解决问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 10:30:01 | 显示全部楼层
本帖最后由 番杰 于 2022-7-29 10:32 编辑

报错是提示你abc没有定义吧;

修改办法:

(1)void c(lottery abc)  改成:void c(struct lottery  abc)  

或者:

(2)struct lottery {...};改成:typedef struct  {...}   lottery ;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-29 11:10:00 | 显示全部楼层
本帖最后由 tommyyu 于 2022-7-29 11:11 编辑
jackz007 发表于 2022-7-29 10:04
标识符 lottery 没有使用 typedef 定义过,所以,不可以这样定义数据类型
      你只要这样定义结 ...


我在一本通上面随便找的一段代码,他这个没有用typedef定义,在调用函数的时候也没有加struct,为什么还没有报错(之前学过的都忘光了
屏幕截图 2022-07-29 110739.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 11:13:59 | 显示全部楼层
tommyyu 发表于 2022-7-29 11:10
我在一本通上面随便找的一段代码,他这个没有用typedef定义,在调用函数的时候也没有加struct,为什么 ...


        搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数据类型标识,后者才是。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 11:19:30 | 显示全部楼层
全部的代码,文字版发上来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-29 11:38:21 | 显示全部楼层
jackz007 发表于 2022-7-29 11:13
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数 ...


可是这个报错好像是right数组的问题啊,不是结构体传参的问题
屏幕截图 2022-07-29 113715.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 12:42:27 | 显示全部楼层
tommyyu 发表于 2022-7-29 11:38
可是这个报错好像是right数组的问题啊,不是结构体传参的问题

代码的文字版发上来,我帮你看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-29 12:44:20 | 显示全部楼层
  1. #include<iostream>
  2. using namespace std;
  3. struct lottery{
  4.         int x[7];
  5. };
  6. int count[7];
  7. int right[7];
  8. void c(lottery abc) {
  9.         int co = 0;
  10.         for(int i = 0; i < 7; ++i)
  11.                 for(int j = 0; j <= i; ++j)
  12.                         if(abc.x[i] == right[j]) ++co;
  13.         if(co) count[co]++;
  14. }
  15. int main()
  16. {
  17.         int n;
  18.         cin>>n;
  19.         for(int i=0;i<7;++i) cin>>right[i];
  20.         lottery a[n];
  21.         for(int i=0;i<n;++i)
  22.         {
  23.                 for(int j=0;j<7;++j)
  24.                 {
  25.                         cin>>a[i].x[j];
  26.                 }
  27.                 c(a[i]);
  28.         }
  29.         for(int i=0;i<n;++i) cout<<count[i]<<" ";
  30.         return 0;
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 13:02:40 | 显示全部楼层    本楼为最佳答案   
仔细读一下报错信息,您代码中的变量名和标准库中的符号重名了。在命名空间 std 里已经定义了符号 right 和 count ,因此编译器无法确定您指代的是哪一个 right 或 count 。
修改方法:或者给变量换个名字,或者不要使用只从 std 引入需要的符号,或者显式指明 count 和 right 的所属命名空间。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-30 10:58:57 | 显示全部楼层
jackz007 发表于 2022-7-29 11:13
搞不懂你这本书是怎么回事,按照规范的语法,node 不是能代表 struct node,前者不是规范的数 ...

这个好像是c++
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 00:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表