2016-04-14 11 views
-2

Ich erstelle eine Klasse mit dem Namen Geometry, um die Fläche eines Kreises, Rechtecks ​​oder Dreiecks basierend auf der Anzahl der dem Konstruktor bereitgestellten Parameter zu berechnen. Die Konstruktoren akzeptieren jeweils 1, 2 und 3 Parameter.Berechnen der Fläche von 2D-Formen

#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(); 
    } 

Die Fehler Ich erhalte sind:

keine Anpassungsfunktion für den Anruf Geometry :: Geometry() in Zeile 59

und

Kandidaten erwartet 2 Argumente o in Zeile 33

bereitgestellt

Was bedeuten diese und wie kann ich diese Fehler beheben?

Antwort

0

Um Ihre Frage zu beantworten, schauen Sie sich die Konstruktoren an, die Sie definiert haben, und sehen Sie sich an, wie Sie Ihre Klasse aufrufen. Sie haben keinen Konstruktor angegeben, der 0 Argumente akzeptiert.

Ein paar Dinge, die Fehler, sobald Sie den Konstruktor Problem fertig drehen wird:

Die Verfahren gehen zu müssen, wissen, welche Klasse sie gehören.

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

auch (nur pingelig) sollten Sie wahrscheinlich alle Variablen machen, die nicht konstant verändern, dh

float pi = 3.14 

const sein sollte.

Auch ich glaube nicht, Sie #include <stdio.h> müssen, wie es ein C++ Programm ist und stdio.h ist C.

EDIT:

Ich denke, getch() sollte in conio.h definiert werden. Also werfen Sie das include dort hinein (oder benutzen Sie etwas wie sleep()) und haben Sie Spaß beim Programmieren.

Die Fehlermeldung teilt Ihnen mit, dass die von Ihnen programmierten Konstruktoren 2 oder 3 Argumente enthalten, aber Sie haben keine in Ihrer Hauptfunktion angegeben, als Sie Ihre Geometrieklasse initialisiert haben.

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