Перегрузка функции area () для вычисления областей двух разных фигур, но я получаю сообщение об ошибке «неопределенная ссылка» - PullRequest
0 голосов
/ 28 сентября 2018

C ++. Я должен вычислить площадь двух фигур, перегрузив функцию area (), и я хочу решить проблему, передав значения констант в качестве аргументов по умолчанию обеим функциям, так какпостановка задачи просит меня написать по одному для каждой фигуры.Но когда я пытаюсь скомпилировать код, я получаю сообщение об ошибке «неопределенная ссылка» для обеих функций.Теперь я могу сразу же посмотреть в Интернете, но я хочу знать, где я ошибаюсь.

Я использую Ubuntu 16.04.

#include<iostream>
#include<math.h>

using namespace std;

double area(int r, float pi=3.14);    //prototype for calculating the area of circle
double area(int l, int h, float a=0.5);    //prototype for area of triangle

int main()
{
    int l, r, h;

    cout<<"Enter the radius of the circle\n";    //accepting radius
    cin>>r;

    cout<<"Enter length of one side and height of triangle\n";    //accepting length and height
    cin>>l>>h;

    cout<<"Area of circle is = "<<area(r)<<"\n\n";
    cout<<"Area of triangle is = "<<area(l, h)<<"\n";
}

double area(int r)    //declaration for circle, passing radius accepted and pi as default parameter
{
    float pi;

    double z = r*r*pi;

    return z;
}

double area(int l, int h)    //declaration for triangle passing l and b accepted, and 0.5 as default parameter
{
    float a;

    double z = l*h*a;

    return z;
}

сообщение об ошибке:

X

1 Ответ

0 голосов
/ 28 сентября 2018

Вы объявляете одну функцию area с двумя аргументами, а другую - с тремя.Но вы никогда не определяете эти функции!Ваши area определения функции предназначены для функции с одним аргументом и одним с двумя аргументами.

В определениях необходимо все аргументы,соответствующие значениям в объявлениях:

double area(int r, float pi)    //definition for circle, passing radius accepted and pi as default parameter
{
    ...
}

double area(int l, int h, float a)    //definition for triangle passing l and b accepted, and 0.5 as default parameter
{
    ...
}

Обратите внимание, что значения по умолчанию не нужны в определениях функций, поскольку они уже есть в объявлениях.

...