重载功能出错

时间:2014-01-27 17:08:16

标签: c++

任何人都可以修复此代码中的错误吗?

# 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;

2 个答案:

答案 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

另请注意,您未从readbubble_sort函数返回任何内容。

答案 1 :(得分:1)

1.你的数组中有一个[]和b []是整数数组。

2.in function int read(int *,int)和float read(int *,int),你没有返回任何东西。

3.编译器说你没有上传 swap 没有上下文信息,因为swap是iostream中的一个预定义函数,你甚至没有定义这个变量。