重载功能area()以计算两个不同形状的面积,但是我收到错误消息“未定义参考”

时间:2018-09-28 11:52:46

标签: c++ parameter-passing overloading

C ++-我应该通过重载area()函数来计算两个形状的面积,而我想解决问题的方法是将常量的值作为默认参数传递给两个函数,因为问题陈述要求我为每个形状写一个。但是,当我尝试编译代码时,两个函数都收到错误消息“ undefined reference”。 现在,我可以立即在网络上查找它,但是我想知道我要去哪里。

我正在使用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 :(得分:3)

您用两个参数声明一个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 { ... } 函数定义是针对具有一个参数的函数,以及具有两个参数的函数。

定义需要 all 个参数,与声明中的参数匹配:

const apiCalls = [
   service.method1(),
   service.method2(),
];

return forkJoin(apiCalls).map((results)=>{
    console.log(results);
    return results;
});

请注意,函数的定义中不需要默认值,因为它们已经在声明中了。