• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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...