У меня небольшой вопрос, как я могу инициализировать аргументы по умолчанию в функции?

    #include <iostream>
    #include <cmath>

    using namespace std;
    float area(float a, float b, float c);
    float area(float a, float b=a, float c =a);


    int main() {

        cout << area(10) << endl;
        return 0;
    }

float area(float a, float b, float c){
    return a*b*c
    }

Я получаю ошибки, как я могу сделать это правильно?

1
Anatolij Novosolov 1 Май 2016 в 00:45

3 ответа

Лучший ответ

Вам придется использовать перегрузку вместо параметров по умолчанию:

#include <iostream>
#include <cmath>

using namespace std;
float area(float a, float b, float c);
float area(float a);

int main() {

    cout << area(10) << endl;
    return 0;
}

float area(float a, float b, float c){
  return a*b*c;
}
float area(float a){
  return area(a,a,a);
}
3
Trevor Hickey 30 Апр 2016 в 21:49

В C ++

Вам следует создать прототип и реализовать код только для одного метода, включая необязательные параметры, а значения по умолчанию - необязательный параметр опущен должен быть константой , а не неизвестным значением ...

    float area(float a, float b=0, float c=0);
    int main() {
        cout << area(10) << endl;
        return 0;
    }

float area(float a, float b=-1, float c =-1);){
    if(b==-1 ||c==-1)
    {
        return a*a*a;
    }else
    {
        return a*b*c;
    }
}
0
ΦXocę 웃 Пepeúpa ツ 30 Апр 2016 в 22:11

Если вы хотите, чтобы значение по умолчанию для b и c было значением a, вам следует использовать перегрузку:

float area(float a, float b, float c){
   return a*b*c
}
float area(float a) {
   return area(a, a, a);
}

C ++ не позволяет использовать параметры в качестве аргументов по умолчанию. Так это

float area(float a, float b=a, float c =a);
                           ^^          ^^

Это ошибка.

1
marcinj 30 Апр 2016 в 21:57