C++ Vererbung
-
Hallo ich habe ein Problem mit Vererbung in C++.
Ich arbeite mit Visual Basic 201=:Ich habe eine Klasse die von einer anderen erbt:
//Basic 2D Object (Header-File) class Object { private: float x; //position on x-axis float y; //position on y-axis bool draw; //should "Object" rendered public: //Konstruktor Object(float x, float y); //Destruktor ~Object(); //Methoden float getX(); float getY(); bool isDrawing(); void setX(float newX); void setY(float newY); void setDrawing(bool newDraw); };
//Basic movable 2D Object (Header-File) #include "Object.h" class MovableObject : public Object { private: float xSpeed; //speed in horizontal-direction float ySpeed; //speed in vertical-direction public: //Konstruktor MovableObject(float x, float y); //Methoden float getXSpeed(); float getYSpeed(); void setXSpeed(float xSpeed); void setYSpeed(float ySpeed); };
Und erhalte folgende Fehlermeldung:
1>------ Erstellen gestartet: Projekt: game_lib, Konfiguration: Debug Win32 ------
1> main.cpp
1>c:\programming\c\game_lib\game_lib\object.h(4): error C2011: 'Object': 'class' Typneudefinition
1> c:\programming\c\game_lib\game_lib\object.h(4): Siehe Deklaration von 'Object'
1>c:\programming\c\game_lib\game_lib\movableobject.h(6): error C2504: 'Object': Basisklasse undefiniert
1> MovableObject.cpp
1>c:\programming\c\game_lib\game_lib\object.h(4): error C2011: 'Object': 'class' Typneudefinition
1> c:\programming\c\game_lib\game_lib\object.h(4): Siehe Deklaration von 'Object'
1>c:\programming\c\game_lib\game_lib\movableobject.h(6): error C2504: 'Object': Basisklasse undefiniert
1>c:\programming\c\game_lib\game_lib\movableobject.cpp(8): error C2614: 'MovableObject': Unzulässige Elementinitialisierung: 'Object' ist weder Basis noch Element
1> Code wird generiert...
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Vermutlich Include Guards vergessen. Falls dies das Problem nicht lösen sollte, dann konstruiere bitte ein Minimalbeispiel, das sich (bis auf den Fehler) compilieren lässt. Siehe dritter Link in meiner Signatur.
Außerdem hast du entweder die Regel der großen Drei verletzt oder, wahrscheinlicher, einen völlig sinnlosen Destruktor geschrieben. Siehe
http://en.wikipedia.org/wiki/Special_member_functionsConst correctness ist ein weiteres Stichowrt, mit dem du dich mal beschäftigen solltest
-
Hallo,
Gremilo schrieb:
Hallo ich habe ein Problem mit Vererbung in C++.
Ich arbeite mit Visual Basic 201=:du meinst wohl Visual Studio 2010. Bei Basic hätte ich auch Probleme mit der Vererbung von C++
-
Habs gelöst bekommen. Es lag am Konstruktor.
Haha ja Visual Basic wäre ein bisschen schlecht gewesen
-
Mit C/C++ Kompilierer geht man viel besser zu kompilieren (ich habe es versucht)