鱼C论坛

 找回密码
 立即注册
查看: 2153|回复: 5

请问为什么错了?

 关闭 [复制链接]
发表于 2014-9-26 09:20:00 | 显示全部楼层 |阅读模式
10鱼币
  1. #include <iostream>
  2. #include <malloc.h>
  3. #include <stdlib.h>

  4. using namespace std;

  5. struct Arr
  6. {
  7.     int* pBase; //存储的是数组第一个元素的地址
  8.     int  len; //数组所能容纳的最大元素的个数
  9.     int  cnt; //当前数组有效元素的个数
  10. };

  11. void init_arr(struct Arr* pArr,int length);
  12. bool append_arr();
  13. bool insert_arr();
  14. bool delete_arr();
  15. int  get();
  16. bool is_empty(struct Arr* pArr);
  17. bool is_full();
  18. void sort_arr();
  19. void show_arr(struct Arr* pArr);
  20. void inversion_arr();

  21. int main()
  22. {
  23.     struct Arr arr;
  24.     init_arr(&arr,6);
  25.     show_arr(&arr);

  26.     return 0;
  27. }

  28. void init_arr(struct Arr* pArr,int length)
  29. {
  30.     pArr->pBase = (int* )malloc(sizeof(int) * length);
  31.     if(NULL == pArr->pBase)
  32.     {
  33.         printf("动态内存分配失败!\n");
  34.         exit(-1); //终止整个程序
  35.     }
  36.     else
  37.     {
  38.         pArr->len = length;
  39.         pArr->cnt = 0;
  40.     }
  41.     return;
  42. }

  43. bool is_empty(struct Arr* pArr)
  44. {
  45.     if(NULL == pArr->cnt)
  46.     {
  47.         return true;
  48.     }
  49.     else
  50.     {
  51.         return false;
  52.     }
  53. }

  54. void show_arr(struct Arr* pArr)
  55. {
  56.     if(is_empty(pArr))  //为什么错了?
  57.     {
  58.         printf("数组为空!\n");
  59.     }
  60.     else
  61.     {
  62.         for(int i = 0; i < pArr->cnt; ++i)
  63.         {
  64.             printf("%d",pArr->pBase[i]); // int*
  65.         }
  66.         printf("\n");
  67.     }
  68. }
复制代码

最佳答案

查看完整内容

命名冲突了,修改一下名字就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-26 09:20:01 | 显示全部楼层
本帖最后由 elvo 于 2014-9-26 11:24 编辑

命名冲突了,修改一下名字就可以了
2014-09-26_111956.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-26 10:27:29 | 显示全部楼层
报的什么错,我的wingw都没有错的
对了,第52行的cnt应该是int,让其判断是否等于NULL,我觉得显得有些不优雅。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-9-26 10:41:24 | 显示全部楼层
elvo 发表于 2014-9-26 10:27
报的什么错,我的wingw都没有错的
对了,第52行的cnt应该是int,让其判断是否等于NULL,我觉得显得有些不 ...

VS2010提示 error C2872: “is_empty”: 不明确的符号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-26 12:06:07 | 显示全部楼层
编译错误,“is_empty”不明确的符号。
原因:你自己定义了一个is_empty函数,但是在std::库里面是有一个  std::is_empty操作的。而且你还申明了using namespace std;(即可以调用所有的std库)所以两个重名,导致编译不知道你想调用哪一个!

修改办法:
1, 把自己的定义的函数名更换一下!
2. 去掉using namespace std;  即表示不调用std::is_empty。。
建议:
这也是鱼C老师的建议,在刚学的阶段,尽量不要使用using namespace std;。使用具体的std::cout,std::string,,等等

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
拈花小仙 + 5 + 5 太感谢了~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-9-26 18:53:49 | 显示全部楼层
Thirteen 发表于 2014-9-26 12:06
编译错误,“is_empty”不明确的符号。
原因:你自己定义了一个is_empty函数,但是在std::库里面是有一个  ...

以后多多答题哦,鱼币多多的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 08:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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