c++问题:函数定义

来源:百度知道 编辑:UC知道 时间:2024/05/31 10:12:11
#include<iostream>
#include<vector>
using namespace std;

int main(){

int sum(vector<int>::iterator ip,vector<int>::iterator mp, int a){
return 1;
}
vector<int> vec(10);
sum(vec.begin(), vec.end(), 3.8);
return 0;
}
编译的结果如下:
error C2601: 'sum' : local function definitions are illegal
实在搞不懂,为什么会定义非法啊? 高手帮忙。。。。。
还有一个小疑问,double型的3.8,可以隐式转换为int型,赋给a吗?
不是得显式的转换吗????

C++里函数定义是不允许嵌套的,不能在函数里再定义函数,把
int sum(vector<int>::iterator ip,vector<int>::iterator mp, int a){
return 1;
}
这段移到main函数上面就可以了

一个函数中只能放另外函数的声明而不能是定义,你可以考虑把sum函数移动到main的外面去。

建议这样写,因为各函数都是平级的,不要在一个函数里定义另一个函数。

#include<iostream>
#include<vector>
using namespace std;

int sum(vector<int>::iterator ip,vector<int>::iterator mp, int a)
{
return 1;
}

int main(){

vector<int> vec(10);
sum(vec.begin(), vec.end(), 3.8);
return 0;
}

不能在int main()内部再定义函数

int sum(vector<int>::iterator ip,vector<int>::iterator mp, int a){
return 1;
}
放外面去
不能从double隐式转换成int,反过来可以