Fehlermeldung bei einem Pointer als "Variable"



  • Dann zeig doch einfach mal den (relevanten) Code.
    Und benutz lieber cpp-Tags.



  • So das wäre aus dem oberen Beispiel meine ClassB, da meckert der Compiler bei der Variable pMap rum.

    #ifndef EINHEIT_H
    #define EINHEIT_H
    
    #include "feld.h" // inheriting class's header file
    #include "map.h"
    #include <SDL/sdl.h>
    
    class Einheit : public Feld
    {
    	private:
                bool lebendig;
                int einheitenID;
                int reichweite;
                int rasse;
                Map *pMap; //Dies soll als Referenz dienen
        public:
    		// class constructor
    		Einheit();
    		// class destructor
    		~Einheit();
    		void setLebendig(bool leb);
    		bool getLebendig();
                int getReichweite();
                void move(int iX, int iY);
              //void setMapPointer(Map *pM);
                virtual void drawEinheit(SDL_Surface *view);	
    };
    
    #endif // EINHEIT_H
    

    So und das is dann die so genannt ClassA

    // Class automatically generated by Dev-C++ New Class wizard
    
    #ifndef MAP_H
    #define MAP_H
    #include "spielfeld.h"
    #include "einheit.h"
    #include <SDL/sdl.h>
    /*
     * No description
     */
    class Map
    {
    	private:
                Spielfeld **felder;
                Einheit **troop; //Daraus bastell ich später ein 2 Dimensionales  
                                   Array
                int dimX;
                int dimY;
                int dimXTroop;
                int dimYTroop;
                SDL_Surface *view;
        public:
    		// class constructor
    		Map(int resoX, int resoY, int firstDimTroop, int secondDimTroop, char *cpPath, SDL_Surface *mapView);
    		// class destructor
    		~Map();
    		void setTroopInfo(int firstDim, int secondDim);
    		void setResolution(int nX, int nY);
    		void setFeld(int nX, int nY, int SFNum);
    		void setFeldPos(int dimX, int dimY,int x, int y);
    		void setTroop(int index, int indexY, int x, int y);
                void drawMap();
                int checkClickedItems(int xKoor, int yKoor);
    		int initFelderBase(char *cpPath);
    		int initTroopBase(char *cpPath);
    		void markFeld(int i, int j, bool set);
    		void troopClicked(int xKoor, int yKoor);
    		int* felderClicked(int xKoor, int yKoor);
    
    };
    
    #endif // MAP_H
    

    Sorry für das krumme Einrücken 😃



  • Ich hätte das "relevant" wohl lieber nicht in Klammern setzen sondern fett, kursiv und dreifach schreiben sollen...

    // einheit.h
    #include "feld.h" // inheriting class's header file
    #include <SDL/sdl.h>
    
    class Map;
    
    class Einheit : public Feld
    {
      // ...
      Map *pMap; //Dies soll als Referenz dienen
    };
    
    // Einheit.cpp
    #include "map.h"
    
    // das gleiche am besten auch für map.h
    


  • Sorry ich hab es sogar überlesen.

    also map.h

    #include "einheit.h"
    #include <SDL/sdl.h>
    class Map
    {
    	private:
                  Einheit **troop; //Hier raus entsteht ein 2 Dimensionales Array
    
    // map.cpp
    #include "einheit.h"
    


  • Du hast zwei Klassen, die sich gegenseitig kennen müssen - da benötigst du eine forward-Deklaration zumindest von einer der Klassen 😉



  • Okay hab sowas noch nie gemacht, aber ich werd dann wohl mal googeln müssen oder hat einer was zu diesem Thema parat ?



  • Hi!

    Wie oft noch???

    A.h

    class B;
    
    class A
    {
      B *obj;
    };
    

    B.h

    class A;
    
    class B
    {
      A * obj;
    };
    

    A.cpp

    #include "B.h"
    
    // Definition
    

    B.cpp

    #include "A.h"
    
    // Definition
    

    grüße



  • Was heißt wie oft noch 😉 Das ist in C++ gar nich erlaubt und somit erst gar nicht möglich, zumindest nicht im DEV CPP !!! Weil ich mit meiner Annahme im erst eintrag recht hatte.



  • Was ein Schwachsinn...

    Das ist in C++ erlaubt und somit erst recht möglich, und mit ziemlicher Sicherheit kann der gcc, den Dev-C++ benutzt das auch. WIE, wurde Dir schon dreimal oder so gepostet.



  • So hab den Fehler gefunden es hat irgendwas mit meine DEV zu tun. Weiß der Geier was. Hab das grad beim Kollegen aufn Notebook getestet, da läufts. Erstmal Danke für eure Hilfe(n), auch wenn es zur Aufregung geführt hat.
    Dann mal ein genehmes WE.


Anmelden zum Antworten