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;
}
错误消息:
答案 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;
});
请注意,函数的定义中不需要默认值,因为它们已经在声明中了。