• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Polymorphieproblem in C++

wastel

Grahams Jubiläumsapfel
Registriert
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
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
Wieso hast du den Default-Konstruktor der Klasse Point auskommentiert?

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

der_Kay

Idared
Registriert
02.09.04
Beiträge
27
Wieso hast du den Default-Konstruktor der Klasse Point auskommentiert?

Code:
//Point(){x=y=0;}
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...