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 ==========


  • Mod

    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_functions

    Const 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)


Log in to reply