鱼C论坛

 找回密码
 立即注册
查看: 1787|回复: 29

[已解决]VS2017找不到指定文件,百度一直未解决【30人民币悬赏】

[复制链接]
发表于 2020-8-8 15:44:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 爱学习520 于 2020-8-8 19:33 编辑

百度了一下午,都没法解决这个,求大佬 ,用我写的类,那就这样,如果main里面没有调用我写的Vector类,就没有这个问题。希望可以帮我远程看看,因为我从下午2点搞到现在晚上7:30,实在不想试了,远程解决我发30小红包,小小心意,真心求帮忙,解决不了了   QQ:3423014389

按照10楼修改的然后是这样的页面,麻烦10楼楼主看一下,第二张图片
最佳答案
2020-8-8 17:51:55
试了下,可以正常编译执行,下面是完整代码,三个文件,其中有几个小修改,
你复制完整代码看正常不。我是在VS2015下运行的。

//Vector.h
  1. #ifndef VECTOR_H_
  2. #define VECTOR_H_

  3. #define SUCCESS           1 // 成功                        
  4. #define ERROR            -1 // 失败                        
  5. #define MALLOC_ERROR     -2 // 申请内存失败                        
  6. #define INDEX_ERROR      -3 // 错误的索引号   

  7. template<class T_ELE>
  8. class Vector
  9. {
  10. private:
  11.     T_ELE *pVector;
  12.     int Len;
  13.     int Index;
  14.     int InitSize;
  15.     int Increment;
  16. public:
  17.     Vector<T_ELE>();
  18.     Vector<T_ELE>(int size);
  19.     ~Vector<T_ELE>();
  20.     int push_back(T_ELE Element);
  21.     bool expand();
  22.     int insert(int index, T_ELE Element);
  23. };
  24. #endif
复制代码


//Vector.cpp
  1. #include "Vector.h"

  2. template<class T_ELE>
  3. Vector<T_ELE>::Vector() : InitSize(100), Increment(5)
  4. {
  5.     //分配空间
  6.     //pVector = new T_ELE(InitSize);
  7.     pVector = new T_ELE[InitSize];
  8.     //初始化
  9.     memset(pVector, 0, InitSize * sizeof(T_ELE));
  10.     //其他变量初始化
  11.     Len = InitSize;
  12.     Index = 0;
  13. }

  14. template<class T_ELE>
  15. Vector<T_ELE>::Vector(int size) : Increment(5)  //增加了Increment(5)
  16. {
  17.     //分配空间
  18.     //pVector = new T_ELE(size);
  19.     pVector = new T_ELE[size];
  20.     //初始化
  21.     memset(pVector, 0, size * sizeof(T_ELE));
  22.     //其他变量初始化
  23.     Len = size;
  24.     Index = 0;
  25. }

  26. template<class T_ELE>
  27. Vector<T_ELE>::~Vector()
  28. {
  29.     //释放类对象里面申请的空间
  30.     delete[]pVector;
  31.     pVector = NULL;
  32. }

  33. template<class T_ELE>
  34. int Vector<T_ELE>::push_back(T_ELE Element)
  35. {
  36.     //判断是否需要增容
  37.     if (Index >= Len)
  38.     {
  39.         expand();
  40.     }
  41.     //将新元素放到最后一个位置
  42.     memcpy(&pVector[Index], &Element, sizeof(T_ELE));
  43.     //修改索引
  44.     Index++;
  45.     //返回成功
  46.     return SUCCESS;
  47. }
  48. //扩容
  49. template<class T_ELE>
  50. bool Vector<T_ELE>::expand()
  51. {
  52.     int tlen;
  53.     int* pNew;
  54.     //计算增加后的长度
  55.     tlen = Len + Increment;
  56.     //申请现在需要的空间
  57.     //pNew = new T_ELE(tlen);
  58.     pNew = new T_ELE[tlen];
  59.     //将数据复制到新空间
  60.     memcpy(pNew, pVector, Len*sizeof(T_ELE));
  61.     //释放原来的空间
  62.     delete[]pVector;
  63.     pVector = pNew;
  64.     pNew = NULL;
  65.     //修改其他变量值
  66.     Len = tlen;
  67.     return SUCCESS;
  68. }
  69. //插入数据
  70. template<class T_ELE>
  71. int Vector<T_ELE>::insert(int index, T_ELE Element)
  72. {
  73.     //判断索引是否在合理区间
  74.     if (index<0 || index>Index)
  75.         return INDEX_ERROR;
  76.     //判断是否需要扩容
  77.     if (Index >= Len)
  78.         expand();
  79.     //将索引后面的元素全部后移
  80.     for (int i = Index; i>index - 1; i--)
  81.         memcpy(&pVector[i], &pVector[i - 1], sizeof(T_ELE));

  82.     //将元素插入对应的位置
  83.     memcpy(&pVector[index - 1], &Element, sizeof(T_ELE));
  84.     //修改其他对应的参数
  85.     Index++;
  86. }
复制代码


//test.cpp
  1. #include<iostream>
  2. #include <string.h>
  3. #include "Vector.h"
  4. #include "Vector.cpp"                    

  5. using namespace std;

  6. //测试函数
  7. void TextVector()
  8. {
  9.     Vector<int>* p = new Vector<int>(5);
  10.     p->push_back(1);
  11.     p->push_back(2);
  12.     p->push_back(3);
  13.     p->push_back(4);
  14.     p->push_back(5);
  15.     p->push_back(6);

  16. }

  17. int main()
  18. {
  19.     TextVector();
  20.     return 0;
  21. }
复制代码
2020-08-08_154243.png
2020-08-08_154243.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-8 15:46:29 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 15:47:21 | 显示全部楼层
zltzlt 发表于 2020-8-8 15:46
这个方法试过吗?

https://blog.csdn.net/eagle_or_snail/article/details/80397959

这个试过,没有用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 15:48:33 | 显示全部楼层
下面写着了,生成失败。

把 第2行的
  1. #include "Vector.h"
复制代码
改成
  1. #include "Vector.cpp"
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 15:49:23 | 显示全部楼层
还有,把你的 Vector.cpp 发上来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 15:52:06 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-8 15:48
下面写着了,生成失败。

把 第2行的改成

改为整个程序界面调转到其他莫名其妙的界面了,并且程序终止
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 15:52:39 | 显示全部楼层
爱学习520 发表于 2020-8-8 15:52
改为整个程序界面调转到其他莫名其妙的界面了,并且程序终止

?发截图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 15:56:05 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-8 15:49
还有,把你的 Vector.cpp 发上来

这个在devcpp里面没有问题,这个程序还没有写完

  1. #include<iostream>
  2. #include <string.h>

  3. #define SUCCESS           1 // 成功                       
  4. #define ERROR            -1 // 失败                       
  5. #define MALLOC_ERROR         -2 // 申请内存失败                       
  6. #define INDEX_ERROR                 -3 // 错误的索引号                       

  7. using namespace std;


  8. template<class T_ELE>
  9. Vector<T_ELE>::Vector():InitSize(100), Increment(5)
  10. {
  11.         //分配空间
  12.         pVector = new T_ELE(InitSize);
  13.         //初始化
  14.         memset(pVector, 0, InitSize * sizeof(T_ELE));
  15.         //其他变量初始化
  16.         Len =InitSize;
  17.         Index = 0;               
  18. }

  19. template<class T_ELE>
  20. Vector<T_ELE>::Vector(int size)
  21. {
  22.         //分配空间
  23.         pVector = new T_ELE(size);
  24.         //初始化
  25.         memset(pVector, 0, size * sizeof(T_ELE));
  26.         //其他变量初始化
  27.         Len = size;
  28.         Index = 0;
  29. }

  30. template<class T_ELE>
  31. Vector<T_ELE>::~Vector()
  32. {
  33.         //释放类对象里面申请的空间
  34.         delete []pVector;
  35.         pVector=NULL;
  36. }

  37. template<class T_ELE>
  38. int Vector<T_ELE>::push_back(T_ELE Element)
  39. {
  40.         //判断是否需要增容
  41.         if(Index>=Len)
  42.         {
  43.                 expand();               
  44.         }
  45.         //将新元素放到最后一个位置
  46.         memcpy(&pVector[Index],&Element,sizeof(T_ELE));
  47.         //修改索引
  48.         Index++;
  49.         //返回成功
  50.         return SUCCESS;
  51. }
  52. //扩容
  53. template<class T_ELE>
  54. bool Vector<T_ELE>::expand()
  55. {
  56.         int tlen;
  57.         int* pNew;
  58.         //计算增加后的长度
  59.         tlen=Len+Increment;
  60.         //申请现在需要的空间
  61.         pNew=new T_ELE(tlen);
  62.         //将数据复制到新空间
  63.         memcpy(pNew,pVector,Len*sizeof(T_ELE)) ;
  64.         //释放原来的空间
  65.          delete []pVector;
  66.          pVector=pNew;
  67.          pNew=NULL;
  68.          //修改其他变量值
  69.          Len=tlen;
  70.          return SUCCESS;
  71. }
  72. //插入数据
  73. template<class T_ELE>
  74. int Vector<T_ELE>::insert(int index, T_ELE Element)
  75. {
  76.         //判断索引是否在合理区间
  77.         if(index<0||index>Index)
  78.         return INDEX_ERROR;       
  79.         //判断是否需要扩容
  80.         if(Index>=Len)
  81.         expand();       
  82.         //将索引后面的元素全部后移
  83.         for(int i=Index;i>index-1;i--)
  84.         memcpy(&pVector[i],&pVector[i-1],sizeof(T_ELE));
  85.        
  86.         //将元素插入对应的位置
  87.         memcpy(&pVector[index-1],&Element,sizeof(T_ELE));
  88.         //修改其他对应的参数
  89.         Index++;
  90. }

  91. //测试函数
  92. void TextVector()
  93. {
  94.         Vector<int>* p=new Vector<int>(5);
  95.         p->push_back(1);
  96.         p->push_back(2);
  97.         p->push_back(3);
  98.         p->push_back(4);
  99.         p->push_back(5);
  100.         p->push_back(6);
  101.        
  102. }

  103. int main()
  104. {
  105.         TextVector();
  106.         return 0;
  107. }
  108.   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 15:57:43 | 显示全部楼层

回复怎么发截图阿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 15:59:28 | 显示全部楼层
爱学习520 发表于 2020-8-8 15:57
回复怎么发截图阿

imgchr.com
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 16:05:57 | 显示全部楼层

我试了其他的,.h才是正确的方式,不是CPP,不是这个的问题,你哪个显示无法加载符号,生成新的页面的同时,整个程序都卡死了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 16:07:15 | 显示全部楼层

截图表示不会发,你哪个什么.com实在表示不知道是啥,没怎么用过论坛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 16:07:43 | 显示全部楼层
爱学习520 发表于 2020-8-8 16:07
截图表示不会发,你哪个什么.com实在表示不知道是啥,没怎么用过论坛


……上传图片,给我发过来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 16:13:39 | 显示全部楼层
本帖最后由 baige 于 2020-8-8 16:15 编辑

类的声明写成.h的文件把,
把Vector.cpp删除,新建一个头文件把Vector类的声明放进去试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 16:35:08 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-8 16:40:46 | 显示全部楼层
应该是可以的,楼主可以了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 16:41:41 | 显示全部楼层
baige 发表于 2020-8-8 16:13
类的声明写成.h的文件把,
把Vector.cpp删除,新建一个头文件把Vector类的声明放进去试试

声明类的时候,这个Vector.cpp和.h是自动生成的,Vector.h里面放的是函数声明,Vector.cpp里面放的是.h里面对应函数的实现,这个以前一直这样都没有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 16:50:38 | 显示全部楼层
baige 发表于 2020-8-8 16:13
类的声明写成.h的文件把,
把Vector.cpp删除,新建一个头文件把Vector类的声明放进去试试

你的意思是要我把所有.cpp 的函数实现写在.h吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 16:51:50 | 显示全部楼层

1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 16:52:55 | 显示全部楼层
爱学习520 发表于 2020-8-8 16:50
你的意思是要我把所有.cpp 的函数实现写在.h吗

如果是把所有的Vector.cpp函数的实现直接写在Vector.h的话,那要程序看上去一点都不清楚,还是声明和实现在不同文件里面号,你这样的话并没有解决问题阿,不知道我理解错你的意思没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 01:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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