我试图传递数组,但不明白为什么它会给我这些错误。该代码也可在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;
}
答案 0 :(得分:1)
这里提到的问题是将数组传递给函数it decays to a pointer。涉及最少更改的修复是通过引用传递数组,如下所示:
template <int U>
int getMax(int (&array)[U])
但是,对于初学者来说,这个修复可能不是最直观的。需要更多更改且可能对初学者更有意义的修复方法是使用std::vector
或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);
答案 1 :(得分:0)
size
参数需要指定类型(正确类型为size_t
)。array
函数中的getMax
是指针(不是数组)。您不能使用基于范围的for
循环。您必须使用常规for
循环,它将使用size
参数。答案 2 :(得分:0)
原因是for(:)无法获得“int array []”的大小。
你有一个大小参数,但是begin()&amp; end()不能使用它。您必须将begin()和end()成员函数包装起来,或者只是简单地将其包含在
中for(int i = 0; i< size; i++)
{
int num = array[i];
if(num > max)
max = num;
}