我创建了一个名为Geometry
的类,根据提供给构造函数的参数数量来计算圆,矩形或三角形的面积。构造函数分别接受1,2和3个参数。
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
class Geometry
{
private:
int a,b,c,d,e,r;
float pi=3.14;
public:
void input()
{
cout<<"Enter the value of a,b,c,d,r";
cin>>a;
cin>>b;
cin>>c;
cin>>d;
cin>>e;
cin>>r;
}
void calculate();
void display();
Geometry (int);
Geometry (int,int);
Geometry (int,int,int);
};
Geometry :: Geometry(int p)
{
p=r;
float pi=3.14;
}
Geometry :: Geometry (int x,int y)
{
x=a,y=b;
}
Geometry :: Geometry (int f,int g,int h)
{
f=c,g=d,h=e;
}
void calculate()
{
int a,b,c,d,e,r;
float s;
s=(c+d+e)/2;
float areat,areac,arear;
areat=sqrt(s*(s-c)*(s-d)*(s-e));
arear=(a*b);
areac=(3.14*r*r);
}
void display()
{
float areac,areat,arear;
cout<<"area of circle is:"<<areac;
cout<<"area of rectangle is:"<<arear;
cout<<"area of triangle is:"<<areat;
}
int main()
{
Geometry z;
z.calculate();
z.display();
getch();
}
我收到的错误是:
第59行中调用Geometry :: Geometry()没有匹配函数
和
候选人预计第33行提供2个论点
这些意味着什么?如何解决这些错误?
答案 0 :(得分:0)
要回答您的问题,请查看您定义的构造函数,然后查看您如何调用您的类。您没有指定带0参数的构造函数。
完成构造函数问题后,有些事情会变成错误:
这些方法需要知道它们属于哪个类。
void Geometry::calculate(){...}
void Geometry::display(){...}
另外(只是挑剔)你应该让所有不变的变量保持不变,即
float pi = 3.14
应该是const。
此外,我认为您不需要#include <stdio.h>
因为它是C ++程序而且stdio.h
是C.
修改强>
我认为应该在conio.h中定义getch()
。所以扔在那里(或使用像sleep())并有乐趣编程。
错误消息告诉您编程的构造函数有2个或3个参数,但在初始化Geometry类时,您没有在main函数中提供任何参数。
Geometry z; // Uses constructor Geometry(); which doesn't exist
Geometry z(5); // Uses constructor Geometry(int p);
Geometry z(5, 6); // Uses constructor Geometry(int x, int y);
Geometry z(5, 6, 7); // Uses constructor Geometry(int f, int g, int h);