2016-04-14 143 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);