2016-04-14 142 views
-2

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

候选人第33行提供的2个参数

这些是什么意思,我该如何解决这些错误?

回答

0

要回答你的问题,看看你定义的构造函数,然后看看你是如何调用你的类。你没有指定一个具有0个参数的构造函数。

有几件事情,一旦你完成构造问题将变成错误:

的方法将需要知道他们属于哪一类。

void Geometry::calculate(){...} 
void Geometry::display(){...} 

而且(只是被挑剔),你应该让所有不改变常数变量,即

float pi = 3.14 

应该是const。

另外,我不认为你需要#include <stdio.h>,因为它是一个C++程序和stdio.h是C.

编辑:

我觉得getch()应该CONIO.H定义。所以把它放在那里(或者使用像sleep())并且有趣的编程。

错误消息告诉您,您编程的构造函数带有2或3个参数,但是当初始化几何类时,您没有在主函数中提供任何参数。

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