Seltsames Compilerverhalten



  • Sorry für den blöden Threadnamen, aber was anderes fällt mir dazu nicht ein:

    Ich versuche dieses File zu Compilieren:

    #include "TglButton.h"
    #include "TglObject.h"
    #include "GL\gl.h"
    
    //----- foward declaration -----
    bool stdDrawFunc(TglObject* self);   //Zeile #6
    
    //----- constructor -----
    TglButton::TglButton()
    {
    	DoDraw = stdDrawFunc;        //Zeile #11
    	text = "";
    }
    
    //----- standard draw function -----
    bool stdDrawFunc(TglObject* self)
    {                                    //Zeile #17
            //[...]
    
    	return true;
    }
    

    Der Header dazu ist dieser (wobei der nicht wirklich viel enthält):

    #include "TglKeyReadComponent.h"
    #include <iostream>
    using namespace std;
    
    class TglButton : public TglKeyReadComponent
    {
    	protected:
    		string text;
    	public:
    		//Constructor
    		TglButton();
    
    		//Getters
    		string getText(){return text;};
    
    		//Setters
    		void setText(string newValue){text = newValue;};
    }
    

    Auf jeden fall erhalte ich folgende Fehlermeldungen:

    ../GL_SDL_UI/TglButton.cpp:6: error: new types may not be defined in a return type
    ../GL_SDL_UI/TglButton.cpp:6: error: `bool' is now a keyword
    ../GL_SDL_UI/TglButton.cpp: In constructor `TglButton::TglButton()':
    ../GL_SDL_UI/TglButton.cpp:11: error: invalid conversion from `TglButton (*)(TglObject*)' to `bool (*)(TglObject*)'
    ../GL_SDL_UI/TglButton.cpp: In function `bool stdDrawFunc(TglObject*)':
    ../GL_SDL_UI/TglButton.cpp:17: error: new declaration `bool stdDrawFunc(TglObject*)'
    ../GL_SDL_UI/TglButton.cpp:6: error: ambiguates old declaration `TglButton stdDrawFunc(TglObject*)'
    

    Was mich allerdings total verwundert, denn ich habe eine Andere Datei in meinem Projekt welche inhaltlich identisch ist, und die wird unstandslos akzeptiert. Der einzigste unterschied zwischen den Files ist, dass ich da noch einen anderen Header mit einbinde. Wenn ich das aber hier mache, dann sind zwar alle obengenannten fehler weg, dafür ist dann aber angeblich was in STL-Vektor ( <vektor> ) kaputt, was ich nicht glauben kann.
    Sieht von euch jemand, was ich falsch mache. Vermutlich ist das nur ein total einfacher fehler, aber die Fehlermeldungen oben lassen mich im dunkeln stehen.



  • Strichpunkt hinter class fehlt.



  • Super! Danke! 👍

    Wieso meckert der Compiler das nicht an... 😡 Da sollte sich mal ein Compierbauer was einfallen lassen. Zumindest ne Warnung wäre gut. 👎



  • hab cih mir auch schon manchmal gedacht wieso der compiler das nicht merkt. 😕 hab auch schon wegen dem semikolon ewig gesucht weil ich natürlcih gaz andere sachen vermutet hab. naja... hinterher weis mans für immer 🤡



  • wahrscheinlich kann ein parser das nicht feststellen.



  • Ding dong die Hex is tot schrieb:

    hab cih mir auch schon manchmal gedacht wieso der compiler das nicht merkt.

    Nunja, ganz so einfach ist die Sache nicht. Nach } muss ja nicht gleich das Semikolon kommen. Da können zB auch noch Instanzen und deren Initialisierung folgen.


Anmelden zum Antworten