鱼C论坛

 找回密码
 立即注册
查看: 1399|回复: 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
#ifndef VECTOR_H_
#define VECTOR_H_

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

template<class T_ELE>
class Vector
{
private:
    T_ELE *pVector;
    int Len;
    int Index;
    int InitSize;
    int Increment;
public:
    Vector<T_ELE>();
    Vector<T_ELE>(int size);
    ~Vector<T_ELE>();
    int push_back(T_ELE Element);
    bool expand();
    int insert(int index, T_ELE Element);
};
#endif

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

template<class T_ELE>
Vector<T_ELE>::Vector() : InitSize(100), Increment(5)
{
    //分配空间
    //pVector = new T_ELE(InitSize);
    pVector = new T_ELE[zxsq-anti-bbcode-InitSize];
    //初始化
    memset(pVector, 0, InitSize * sizeof(T_ELE));
    //其他变量初始化
    Len = InitSize;
    Index = 0;
}

template<class T_ELE>
Vector<T_ELE>::Vector(int size) : Increment(5)  //增加了Increment(5)
{
    //分配空间
    //pVector = new T_ELE(size);
    pVector = new T_ELE[zxsq-anti-bbcode-size];
    //初始化
    memset(pVector, 0, size * sizeof(T_ELE));
    //其他变量初始化
    Len = size;
    Index = 0;
}

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

template<class T_ELE>
int Vector<T_ELE>::push_back(T_ELE Element)
{
    //判断是否需要增容
    if (Index >= Len)
    {
        expand();
    }
    //将新元素放到最后一个位置
    memcpy(&pVector[zxsq-anti-bbcode-Index], &Element, sizeof(T_ELE));
    //修改索引
    Index++;
    //返回成功
    return SUCCESS;
}
//扩容
template<class T_ELE>
bool Vector<T_ELE>::expand()
{
    int tlen;
    int* pNew;
    //计算增加后的长度
    tlen = Len + Increment;
    //申请现在需要的空间
    //pNew = new T_ELE(tlen);
    pNew = new T_ELE[zxsq-anti-bbcode-tlen];
    //将数据复制到新空间
    memcpy(pNew, pVector, Len*sizeof(T_ELE));
    //释放原来的空间
    delete[]pVector;
    pVector = pNew;
    pNew = NULL;
    //修改其他变量值
    Len = tlen;
    return SUCCESS;
}
//插入数据
template<class T_ELE>
int Vector<T_ELE>::insert(int index, T_ELE Element)
{
    //判断索引是否在合理区间
    if (index<0 || index>Index)
        return INDEX_ERROR;
    //判断是否需要扩容
    if (Index >= Len)
        expand();
    //将索引后面的元素全部后移
    for (int i = Index; i>index - 1; i--)
        memcpy(&pVector[zxsq-anti-bbcode-i], &pVector[i - 1], sizeof(T_ELE));

    //将元素插入对应的位置
    memcpy(&pVector[index - 1], &Element, sizeof(T_ELE));
    //修改其他对应的参数
    Index++;
}

//test.cpp
#include<iostream>
#include <string.h>
#include "Vector.h"
#include "Vector.cpp"                    

using namespace std;

//测试函数
void TextVector()
{
    Vector<int>* p = new Vector<int>(5);
    p->push_back(1);
    p->push_back(2);
    p->push_back(3);
    p->push_back(4);
    p->push_back(5);
    p->push_back(6);

}

int main()
{
    TextVector();
    return 0;
}
2020-08-08_154243.png
2020-08-08_154243.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-8 15:46:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

这个试过,没有用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

把 第2行的
#include "Vector.h"
改成
#include "Vector.cpp"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 15:49:23 | 显示全部楼层
还有,把你的 Vector.cpp 发上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

把 第2行的改成

改为整个程序界面调转到其他莫名其妙的界面了,并且程序终止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

?发截图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个在devcpp里面没有问题,这个程序还没有写完
#include<iostream>
#include <string.h>

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

using namespace std;


template<class T_ELE>
Vector<T_ELE>::Vector():InitSize(100), Increment(5)
{
        //分配空间
        pVector = new T_ELE(InitSize);
        //初始化
        memset(pVector, 0, InitSize * sizeof(T_ELE));
        //其他变量初始化
        Len =InitSize;
        Index = 0;                
}

template<class T_ELE>
Vector<T_ELE>::Vector(int size)
{
        //分配空间
        pVector = new T_ELE(size);
        //初始化
        memset(pVector, 0, size * sizeof(T_ELE));
        //其他变量初始化
        Len = size;
        Index = 0;
}

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

template<class T_ELE>
int Vector<T_ELE>::push_back(T_ELE Element)
{
        //判断是否需要增容
        if(Index>=Len) 
        {
                expand();                
        }
        //将新元素放到最后一个位置
        memcpy(&pVector[Index],&Element,sizeof(T_ELE));
        //修改索引
        Index++; 
        //返回成功
        return SUCCESS; 
}
//扩容
template<class T_ELE>
bool Vector<T_ELE>::expand()
{
        int tlen; 
        int* pNew;
        //计算增加后的长度
        tlen=Len+Increment;
        //申请现在需要的空间
        pNew=new T_ELE(tlen);
        //将数据复制到新空间
        memcpy(pNew,pVector,Len*sizeof(T_ELE)) ;
        //释放原来的空间
         delete []pVector;
         pVector=pNew;
         pNew=NULL;
         //修改其他变量值
         Len=tlen; 
         return SUCCESS;
}
//插入数据 
template<class T_ELE>
int Vector<T_ELE>::insert(int index, T_ELE Element)
{
        //判断索引是否在合理区间
        if(index<0||index>Index) 
        return INDEX_ERROR;        
        //判断是否需要扩容 
        if(Index>=Len)
        expand();        
        //将索引后面的元素全部后移 
        for(int i=Index;i>index-1;i--)
        memcpy(&pVector[i],&pVector[i-1],sizeof(T_ELE));
        
        //将元素插入对应的位置 
        memcpy(&pVector[index-1],&Element,sizeof(T_ELE));
        //修改其他对应的参数
        Index++; 
} 

//测试函数 
void TextVector()
{
        Vector<int>* p=new Vector<int>(5);
        p->push_back(1);
        p->push_back(2);
        p->push_back(3);
        p->push_back(4);
        p->push_back(5);
        p->push_back(6);
        
}

int main()
{
        TextVector();
        return 0;
}
  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回复怎么发截图阿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

截图表示不会发,你哪个什么.com实在表示不知道是啥,没怎么用过论坛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


……上传图片,给我发过来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

类的声明写成.h的文件把,
把Vector.cpp删除,新建一个头文件把Vector类的声明放进去试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 16:35:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-8 16:40:46 | 显示全部楼层
应该是可以的,楼主可以了吗
想知道小甲鱼最近在做啥?请访问 -> 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里面对应函数的实现,这个以前一直这样都没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你的意思是要我把所有.cpp 的函数实现写在.h吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 03:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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