1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Polymorphieproblem in C++

Dieses Thema im Forum "OS X-Developer" wurde erstellt von wastel, 04.07.07.

  1. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    Hallo

    Mal wieder ich der e-techniker, der keine Ahnung von C++ hat. Folgendes Programm zeigt mir Fehler zu Beginn der Klassen Graphobj. Kreis und Rechteck und zwar an der geschweiften Klammer heißt es // no matching function for call to Point::point();

    hier der Code:

    Code:
    #include<iostream>
    #include"objekt.h"
    
    using namespace std;
    
    
    
    int main()
    {
        Point p1(0,0) , p2(3,4), p3(5,9), p4(5,9);
        Kreis k1(p3,2);
        Rechteck r1(p1,p2);
        return 0;
    }
    
    Code:
    #ifndef OBJEKT_H_
    #define OBJEKT_H_
    
    #include<iostream>
    #include<cmath>
    
    using namespace std;
    
    
    class Point
    {
    public:
        //friend Graphobj;
        int x, y;
    public:
        //Point(){x=y=0;}
        Point(int X,int Y) 
        {
            x = X;
            y = Y;
        }
    };
    
    
    class Graphobj                
    {
    public:    
        Point refPunkt;
    public: 
        int distanz(Graphobj g2)
        {
            double d = 0;
            d = sqrt((this->refPunkt.x-g2.refPunkt.x)*(this->refPunkt.x-g2.refPunkt.x)+(this->refPunkt.y-g2.refPunkt.y)*(this->refPunkt.y-g2.refPunkt.y));
            return d;
        }
    };
    
    class Rechteck : public Graphobj
    {
    private:
        Point p1, p2;
    public:
        Rechteck(Point d1, Point d2)
        {
            p1 = d1;
            //p1.y = d1.y;
            p2 = d2;
            //p2.y = d2.y;
            this->refPunkt.x = (p2.x - p1.x)/2.;
            this->refPunkt.y = (p2.y - p1.y)/2.;
        }
    };
    
    
    
    class Kreis : public Graphobj
    {
    private:
        Point mittelpkt;
        float radius;
    public:
        Kreis( Point mP, float r) 
        {
            mittelpkt = mP;
            radius = r;
            refPunkt = mP;
        }
    };
    
    #endif /*OBJEKT_H_*/
    
    
    



    HILFE :mad:

    :-D:-D
     
  2. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Wieso hast du den Default-Konstruktor der Klasse Point auskommentiert?

    Code:
    //Point(){x=y=0;}
    
     
  3. der_Kay

    der_Kay Idared

    Dabei seit:
    02.09.04
    Beiträge:
    27
    Vermutlich, weil er wegen des Syntax-Fehlers nicht kompilierte...

    Entweder
    Code:
    Point() : x ( 0 ), y ( 0) {;} 
    und/oder
    Code:
    Point(int x=0, int y=0){;}
    Ausserdem:
    Code:
    friend class ...
    . Es macht vielleicht Sinn Point von GraphicObj abzuleiten...
     
  4. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Erklär mal bitte sowohl mir als auch meinem gcc (der obiges mit dem gegebenen Default-Konstruktor fehlerfrei kompilierte) wo da ein Syntax-Fehler ist.
     
  5. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    jup geht. danke
     
  6. der_Kay

    der_Kay Idared

    Dabei seit:
    02.09.04
    Beiträge:
    27
    ist auch keiner; hatte heute morgen einen Knick in der Optik ;)
     

Diese Seite empfehlen