我遇到以下代码时出现问题,似乎无法弄清楚出了什么问题
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
double distance(int a, int b)
{
return fabs(a-b);
}
int main()
{
vector<int> age;
age.push_back(10);
age.push_back(15);
cout<<distance(age[0],age[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误在于调用函数距离.
/usr/include/c++/4.6/bits/stl_iterator_base_types.h: In instantiation of ‘std::iterator_traits<int>’:
test.cpp:18:30: instantiated from here
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:166:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:167:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:168:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:169:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:170:53: error: ‘int’ is not a class, struct, or union type
Run Code Online (Sandbox Code Playgroud)
tma*_*ric 33
您正在尝试覆盖的std ::距离函数,尝试删除" using namespace std"和排位赛cout和endl与std::
#include <iostream>
#include <cmath>
#include <vector>
double distance(int a, int b)
{
return fabs(a-b);
}
int main()
{
std::vector<int> age;
age.push_back(10);
age.push_back(15);
std::cout<< distance(age[0],age[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所述std::distance用于计数在规定范围内的容器中的元件的数目.你可以在这里找到更多相关信息.
或者,如果要引入std::命名空间,可以重命名距离函数:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
double mydistance(int a, int b)
{
return fabs(a-b);
}
int main()
{
vector<int> age;
age.push_back(10);
age.push_back(15);
cout<<mydistance(age[0],age[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这将使您的代码工作,但不建议在定义之前使用"using namespace"声明.编写代码时,应避免使用第二个选项,此处仅显示代码示例的替代选项.
怎么样
cout<< ::distance(age[0],age[1]);
Run Code Online (Sandbox Code Playgroud)
(其他答案已经建议删除该using指令).
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |