debugging 我的代码在main中调用函数时有什么问题?

kyvafyod  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(134)
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> big_vector = {5,12,4,6,7,8,9,9,31,1,1,5,76,78,8};

    vector<int> a = sub(big_vector);
    cout<<a.size();
    return 0;

}
vector<int> sub(vector<int> big_vector){

    return {big_vector.begin() + 7, big_vector.end() - 2};
}

我得到这个错误,不知道为什么主要。cpp:18:21:错误:未在此范围中声明“sub”
调试和运行不同的测试

n8ghc7c1

n8ghc7c11#

在C++中,所有的对象在使用之前都必须***声明***。

vector<int> a = sub(big_vector);

您的可靠编译器读取了这个函数,但是它完全不知道这个神秘的sub函数是什么。
碳基生命形式拥有的人类眼球可以很容易地在文件的后面看到这个函数,但是你的编译器是一个逻辑兽,它不会读到那么远的源文件,这就是为什么在C++中,在这种情况下函数必须被***声明***:

vector<int> sub(vector<int>);

把这个***放在main函数的***之前。编译器首先读取这个,然后了解这个叫做sub()的令人惊奇的函数的所有信息,这个函数有一个vector<int>参数,并且返回一个vector<int>本身。所以当它读取调用这个函数的main()的内容时,它确切地知道它是关于什么的,并且可以继续进行。
或者,你可以简单地把整个sub()函数***放在main()函数***之前,这样也可以。

相关问题