计算2D形状的面积

时间:2016-04-14 18:40:39

标签: c++

我创建了一个名为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个论点

这些意味着什么?如何解决这些错误?

1 个答案:

答案 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);