SFML Probs



  • Hi, habe mittlerweile ein etwas größeres projekt in sfml und bekomme folgenden fehler:

    1>menustate.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall gamestate::~gamestate(void)" (??1gamestate@@UAE@XZ)" in Funktion "__unwindfunclet$??0menustate@@QAE@XZ$0".
    1>menustate.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall menustate::handleevents(class game &)" (?handleevents@menustate@@UAEXAAVgame@@@Z)".
    1>menustate.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall menustate::update(class game &)" (?update@menustate@@UAEXAAVgame@@@Z)".
    1>menustate.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall menustate::draw(class game &)" (?draw@menustate@@UAEXAAVgame@@@Z)".
    1>menustate.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall menustate::~menustate(void)" (??1menustate@@UAE@XZ)" in Funktion ""public: virtual void * __thiscall menustate::`scalar deleting destructor'(unsigned int)" (??_Gmenustate@@UAEPAXI@Z)".
    

    menustate erbt von der klasse gamestate. aber da scheint es wohl probleme zu geben. da das projekt größer ist um gepostet zu werden und ich sonst keine anhaltspunkte habe woltle ich fragen ob ich mir allein durch die fehlermeldung helfen könntet



  • ok ich hau ma alle codes rein und ja für mich ist das ein größeres projekt ^^

    main:

    #include "game.h"
    
    int main () { 
    
        game cyberpong; 
    
        while (cyberpong.isrunning())  { 
        cyberpong.run(); 
        } 
    
    return 0; 
    }
    

    game.h:

    #include <SFML\Graphics.hpp>
    #include <iostream>
    #include "gamestate.h"
    #include "menustate.h"
    
    #ifndef game_hpp
    #define game_hpp
    
    class game {
    
    public:
    
    	game ();
    	void run ();
    	bool isrunning ();
    
    	bool running;
    	sf::RenderWindow window;
    };
    

    game.cpp:

    #include <SFML\Graphics.hpp> 
    #include "game.h" 
    
    game::game () 
    { 
        window.create (sf::VideoMode(500,500), "First Window"); 
    	running = true;
    }
    
    void game::run (){ 
        while (window.isOpen()) { 
            sf::Event event; 
            while (window.pollEvent(event)) { 
                if (event.type == sf::Event::Closed)  {
                    window.close ();
    				running = false;
    			}
            } 
            window.clear (); 
            window.display (); 
        } 
    } 
    
    bool game::isrunning () { 
        return running; 
    }
    

    gamestate.h (abstrakte klasse):

    #ifndef GAMESTATE_HPP
    #define GAMESTATE_HPP
    
    class game;
    
    class gamestate
    {
    public:
    	virtual void handleevents (game& game) = 0;
    	virtual void update (game& game) = 0;
    	virtual void draw (game& game) = 0;
    	virtual ~gamestate ();
    };
    
    #endif
    

    menustate.h :

    #ifndef MENUSTATE_HPP
    #define MENUSTATE_HPP
    
    #include "game.h"
    
    class menustate : public gamestate
    {
    public:
    	menustate ();
    	~menustate ();
    	void handleevents (game& game);
    	void update (game& game);
    	void draw (game& game);
    
    private:
    	sf::Font font;
    	sf::Text txt;
    };
    
    #endif
    

    menustate.cpp:

    #include "menustate.h"
    
    menustate::menustate () 
    {
    	font.loadFromFile("28.ttf");
    	txt.setFont (font);
    	txt.setString ("Hallo");
    	txt.setCharacterSize (130);
    	txt.setPosition (75, 50);
    	txt.setColor (sf::Color::White);
    }
    


  • Erm, müssen

    void handleevents (game& game);
        void update (game& game);
        void draw (game& game);
    

    aus menustate.h nicht deklariert werden ? Also

    void handleevents (game& game){}
        void update (game& game){}
        void draw (game& game){}
    


  • Zack, Danke!


Log in to reply