Невозможно вызвать функцию из тела int main () - PullRequest
0 голосов
/ 12 ноября 2018

Это созданная мной функция 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 голосов
/ 12 ноября 2018

Настоящая проблема заключается в аргументах в вызове вашей функции. Правильные аргументы:

int main(){
       int array[] = {1,2,3,4,5}; 
       cout<<sum(array,5);
       return 0;
}
0 голосов
/ 12 ноября 2018

Ошибка от вашего вызова функции:

    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 .

0 голосов
/ 12 ноября 2018

Вы пытаетесь создать литерал массива через [2], как поддерживают некоторые популярные языки. C ++, однако, не поддерживает такой синтаксис. Если вы хотите создать массив для передачи в sum, самый простой способ будет выглядеть так:

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

Примечание. Я также скорректировал размер, передаваемый в функцию, в C ++ проверка границ не предусмотрена, поэтому передача размера, превышающего фактический массив, вызывает проблемы.

0 голосов
/ 12 ноября 2018

Приведенный ниже код решит вашу проблему.

int main(){
int arr[] = {2};
cout << sum(arr,1);
return 0;
}
0 голосов
/ 12 ноября 2018

Вам необходимо отправить переменную-массив функции в качестве параметра. Попробуйте это ..

int main(){
    int numbers[] = {1,2,3,4,5};
    cout << sum(numbers,5);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...