任何人都可以修复此代码中的错误吗?
# include<iostream>
using namespace std;
void bubble_sort (int a[], int size);
float bubble_sort (float b[], int size);
int read (int a[], int size);
float read (float b[], int size);
void display (int a[], int size);
void display (float b[], int size);
int main()
{
int const size=10;
int a[10];
int b[10];
read (a,size);
read (b,size);
bubble_sort(a,size);
bubble_sort(b,size);
display(a, size);
display(b, size);
return 0;
}
int read (int a[], int size)
{
cout<<"Enter the integer values:";
for (int i=0; i<10;i++)
cin>>a[i];
}
float read (float b[], int size)
{
cout<<"Enter the float values :";
for (int i=0; i<10;i++)
cin>>b[i];
}
void bubble_sort (int a[], int size)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size - 1; j++)
if (a[j]>a[j + 1])
{
swap = a[j];
a[j] = a[j + 1];
a[j + 1] = swap;
}
}
}
float bubble_sort (float b[], int size)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size - 1; j++)
if (b[j]>b[j + 1])
{
swap = b[j];
b[j] = b[j + 1];
b[j + 1] = swap;
}
}
}
void display (int a[], int size)
{
for (int i=0;i<size;i++)
cout<<a[i]<<" ";
}
void display (float b[], int size)
{
cout<<endl;
for(int i=0 ;i<size; i++)
cout<<b[i]<<" ";
}
编译器显示没有上下文类型信息的重载函数。但我需要使用重载功能。我该怎么解决?
In function ‘void bubble_sort(int*, int)’:
error: overloaded function with no contextual type information
swap = a[j];
^
error: cannot resolve overloaded function ‘swap’ based on conversion to type ‘int’
a[j + 1] = swap;
答案 0 :(得分:3)
在bubble_sort
中,您正在执行swap = a[j];
,但实际上您尚未声明swap
变量。您似乎打算做以下事情:
float swap;
您收到的错误是因为有std::swap
功能而且您已完成using namespace std;
。这正是你不应该做using namespace std;
的原因之一。如果你没有这样做,你的错误就会更清楚:
error: ‘swap’ was not declared in this scope
另请注意,您未从read
和bubble_sort
函数返回任何内容。
答案 1 :(得分:1)
1.你的数组中有一个[]和b []是整数数组。
2.in function int read(int *,int)和float read(int *,int),你没有返回任何东西。
3.编译器说你没有上传 swap 没有上下文信息,因为swap是iostream中的一个预定义函数,你甚至没有定义这个变量。