-1

我试图传递一个数组,但不明白为什么它会给我这些错误。该代码也可在ideone.com 获得

#include <iostream>

using namespace std;

class Max
{
   int max = 0;

   public:
      int getMax(int array[], int size)
      {
          for(int num : array)
          {
                if(num > max)
                    max = num;
          }
          return max;
      }
};

int main( )
{
   Max m;
   int arr[5] = { 5, 3, 2, 7, 6 };
   cout << "Max number is: " << m.getMax(arr,5);

   return 0;
}
4

3 回答 3

1

这里提到的问题是,将数组传递给函数会衰减到指针。涉及最少更改的修复是通过引用传递数组,如下所示:

template <int U>
int getMax(int (&array)[U])

不过,这个修复对于初学者来说可能不是最直观的。需要更多更改并且可能对初学者更有意义的修复是使用std::vectoror std::array

int getMax(const std::vector<int> &array)

并在main

std::vector<int> arr = { 5, 3, 2, 7, 6 };
cout << "Max number is: " << m.getMax(arr);
于 2013-06-13T03:34:02.403 回答
0

原因是 for(:) 无法获取“int array[]”的大小。

你有一个 size 参数,但是 begin() & end() 不能使用它。您必须包装 begin() 和 end() 成员函数,或者只是简单地

for(int i = 0; i< size; i++)
{
   int num = array[i];
   if(num > max)
      max = num;
}
于 2013-06-13T03:40:15.053 回答
0
  1. size参数需要指定类型(正确的类型是size_t)。
  2. arrayin getMaxfunction 是一个指针(不是数组)。您不能for对它使用基于范围的循环。您必须使用常规for循环来利用size参数。
于 2013-06-13T03:14:51.947 回答