Problem mit Vererbung in c++

Guten morgen an alle !

Ich habe gerade ein Problem mit der Vererbung in c++... Vielmehr ein problem mit Visual Studio 2010. Also ich erstelle eine Klasse Person und Mitarbeiter in zwei cpp datein:

Code:
class person
{
      int hausnummer;
      string name;
}

Code:
class mitarbeiter : public person
{
       
}

Die klasse mitarbeiter soll hiebei eine Ableitung von Person sein.

Nun ist das Problem das mir Visual Studio sagt die Klasse Person wäre nicht bekannt.
Sie ist gespeichert sie liegt im gleichen projekt usw weiß einfach nicht was ich noch machen soll ?? wenn ich die klassen untereinander in einer Datei definiere Funktioniert es allerdings möchte ich jede Klasse in einer eigenen Datei muss ich dann die Basisklasse als Header einbinden ? Hab schon gegoogelt aber man findet immer wieder die gleichen Beispiele nirgends ist die Basisklasse als Header eingebunden.
oder ist das ein Problem von Visual studio 2010 nutze Ultimate??

Vielen Dank im Vorraus
 
Wenn du die Klassen in mehreren headerdateien speicherst musst du die benötigte Datei immer inkludieren.

Sent from my OMNIA7 using Board Express
 
Hallo benediktibk und Prophion !

Danke für eure Antworten... War mir etwas unsicher weil ich wirklich kein einziges beispiel gefunden hatte in dem die Basisklasse als header includet ist.

Jedoch habe ich nun ein anderes Problem ich habe nun eine abstracte Klasse Figur erstellt :

Code:
#ifndef fig
#define fig
class figur
{
   public:
   virtual double umfang()const=0;

};

#endif

davon hab ich nun eine Ableitung gemacht rechteckt
Code:
#ifndef recht
#define recht
#include "figur.h"

class rechteck : public figur
{
    double a,b;
   public:

     rechteck(double l, double h)
    {
       a=l;
       b=h;
       

    }
     double flaeche()const
     {
          return a*b;
     }

}
#endif

so das ganze sind header files und sind beide in einer main test includet

Code:
#include "figur.h"
#include"rechteck.h"

void bla(figur* f)
{
    cout<<"Fläche"<<f->flaeche()<<endl;
}

int main()
{
    rechteck r1(4.0,8.0);
    bla(r1);
}

Der sinn dabei ist folgendes durch das schlüssel wort virtual kann ich nun irgenetwas vom typ figur in die methode geben (kreis, rechteck, dreieck, zylinder... im mom ist nur rechteck implementiert) und es wird automatisch die richtige Methode flaeche () aufgerufen ohne das ich dies eyplizit angeben muss.

Das Problem ist nur das mir ständig der Fehler "keine passende konvertierungsfunktion von rechteck zu figur " ausgegeben wird aber? Aber die brauch ich doch gar nicht da rechteck doch auch eine Figur ist habe das ganze auch schon mit zeigern probiert also :

Code:
figur* f = r1;

das funktioniert auch nicht und soweit ich im inet gelesen hab dürfen abstrakte klassen nicht explizit in konvertierungen vorkommen... Also was muss ich tun ?

Danke im Vorraus
 
Ist statt
Code:
   public:
   virtual double umfang()const=0;
nicht virtual double flaeche gemeint?
Sonst ergibt das keinen Sinn (Klasse figure hat
keine Methode flaeche() (wie soll der Compiler das auflösen?), außerdem erben die anderen Klassen damit eine
"pure virtual" Methode und sollten (aller Logik nach, denn
ein spezielles Nachschlagewerk für C++ ist bei mir gerade nicht
zur Hand ;) ) auch abstrakt sein.

PS:
bla(&r1)
 
Hallo CDW!

Ja das stimmt das müsste flache() heißen habe ich mich verschrieben weil ich den code abgeschrieben habe und nicht kopiert :)

sorry!

Danke bla(&r1) funzt ... wegen diesem "&" bin ich fast verzweifelt :(
 
Zurück
Oben