无法从int main()主体中调用函数

时间:2018-11-12 09:08:10

标签: c++ arrays function

这是我创建的SUM函数,用于处理任意数量的整数。

#include <iostream>
using namespace std;

int sum(const int numbers[], const int numbersLen){
    int sum = 0;
    for (int i=0; i < numbersLen; ++i){
        sum += numbers[i];
    }

    return sum;
}

我正在从 int main()调用此函数,但它会继续显示错误

 [Error] invalid conversion from 'char' to 'const int*' [-fpermissive]

主要功能如下:

int main(){
    cout << sum([2],5);
    return 0;
}

我知道这个错误非常幼稚而且很小,但我们将不胜感激!

5 个答案:

答案 0 :(得分:6)

您正在尝试通过[2]创建数组文字,就像某些流行的语言支持一样。但是C ++不支持这种语法。如果要创建一个数组传递给sum,最简单的方法就是这样

int arr[] = {2};
cout << sum(arr,1);

请注意,我还调整了传递给函数的大小,C ++中没有边界检查,因此传递大于实际数组的大小会带来麻烦。

答案 1 :(得分:5)

您需要将数组变量作为参数发送给函数。试试这个。

int main(){
    int numbers[] = {1,2,3,4,5};
    cout << sum(numbers,5);
    return 0;
}

答案 2 :(得分:2)

该错误来自您的函数调用:

    cout << sum([2], 5);

我认为您想将具有5个值{2,2,2,2,2}的数组传递给 sum 函数,那么它将是:

    int main() {
        int arr[] = {2, 2, 2, 2, 2};
        cout << sum(arr, 5);
        return 0;
    }

sum 函数中的另一件事,将 numbersLen 作为值传递是完全可以的,因此const是可移动的。您还应注意 sum 函数返回值的溢出。

答案 3 :(得分:1)

真正的问题在于函数调用中的参数。正确的参数是:

int main(){
       int array[] = {1,2,3,4,5}; 
       cout<<sum(array,5);
       return 0;
}

答案 4 :(得分:-2)

下面给出的代码将解决您的问题。

class number1: UIScrollView {
    init() {
        super.init()
        // Do stuff common to all classes
        setup()
    }

    func setup() {
        // Do stuff for this class
    }
}


class number2: number1 {
    override func setup() {
        // Do stuff for this class only
    }
}