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吗?
不是得显式的转换吗????
#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,反过来可以