Fehler beim nutzen eines structs



  • Heyo. Ich arbeite für die Uni aktuell an einem Space-Invaders Klon. Ich habe folgendes struct in meinem Code:

    Header:

    struct CanvasCoord
    {
    public:
    	CanvasCoord(short p_sX, short p_sY);
    	CanvasCoord();
    	short X;
    	short Y;
    	bool operator==(const CanvasCoord& other) const;
    };
    

    CPP File:

    #include "Canvas.h"
    
    CanvasCoord::CanvasCoord(short p_sX, short p_sY)
    {
    	X = p_sX;
    	Y = p_sY;
    }
    
    CanvasCoord::CanvasCoord()
    {
    }
    
    
    bool CanvasCoord::operator==(const CanvasCoord& other) const
    {
    	return (X == other.X && Y == other.Y);
    }
    
    

    Nutze ich dieses struct nun:

    #include <vector>
    #include <string>
    
    #include "Canvas.h"
    class CCanvasChar
    {
    
    public:
    	CCanvasChar(std::vector<std::vector<std::string>> p_vCharLayout, CanvasCoord p_cStartPos);
    	CCanvasChar(std::vector<std::vector<std::string>> p_vCharLayout, short p_cStartPosX, short _cStartPosY);
    
    	std::vector<std::vector<std::string>> M_vLayout;
    	CanvasCoord M_cStartPos;
    };
    

    bekomme ich den Fehler
    "C2061 Syntaxfehler: Bezeichner "CanvasCoord"" und
    "C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt"

    Ich verstehe null woher diese Fehler kommen. Könnt ihr mir weiterhelfen? Danke schon mal!



  • @Steff00212

    Hast du vielleicht irgendwo eine Funktionssignatur, wo der Rückgabewert nicht angegeben ist? In solchen Fällen darf ein C-Compiler int als Rückgabetyp annehmen, C++ Compiler dürfen das nicht.
    Schreibfehler in Klassennamen können dazu führen, dass der Konstruktor nicht als Konstruktor erkannt wird, sondern als normale Funktion ohne Rückgabewert. Kann das bei dir der Fall sein (vergl. CanvasCoord und CCanvasChar, haste da vielleicht was verwechselt?)



  • Die Fehler sollten auch sagen, wo sie auftreten. Und das ist wohl nicht im hier gezeigten Code.

    Mit dem obigen Code kann man das nämlich nicht nachvollziehen. Wenn man das, was du unter "Header" stehen hast, in den Code unter "Nutze ich dieses struct nun" reinkopiert (an die Stelle des #include "Canvas.h"), dann kompiliert der Code ohne Fehler (mit gcc -c)


Anmelden zum Antworten