Problem mit statischem Objekt in Klasse



  • Hallo,
    Bei mir tut sich grade ein Problem auf. Der folgende Quellcode:

    class TerrainSprite {
    	static sf::Image Gras;
    	static sf::Image Wasser;
    	static sf::Image Fels;
    	sf::Sprite Sprite;
    	bool begehbar;
    	bool befahrbar;
    public:
    	TerrainSprite() {
    		Gras.LoadFromFile("Tiles\\Gras.jpg");
    		Wasser.LoadFromFile("Tiles\\Wasser.jpg");
    		Fels.LoadFromFile("Tiles\\Fels.jpg");
    	}
    	void setSpriteImg(int i) {
    		if(i == 0) {
    			Sprite.SetImage(Gras);
    			begehbar = true;
    			befahrbar = false;
    		}
    		if(i == 1) {
    			Sprite.SetImage(Wasser);
    			begehbar = false;
    			befahrbar = true;
    		}
    		if(i == 2) {
    			Sprite.SetImage(Fels);
    			begehbar = false;
    			befahrbar = false;
    		}
    	}
    	void setSpriteXY(int x, int y) {
    		Sprite.SetPosition(x, y);
    	}
    };
    

    führt zu diesen Fehlern:

    Vc++2008 schrieb:

    Verknüpfen...
    main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class sf::Image TerrainSprite::Fels" (?Fels@TerrainSprite@@0VImage@sf@@A)".
    main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class sf::Image TerrainSprite::Wasser" (?Wasser@TerrainSprite@@0VImage@sf@@A)".
    main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class sf::Image TerrainSprite::Gras" (?Gras@TerrainSprite@@0VImage@sf@@A)".
    D:\Visual Studio 2008\Projects\TGFS\Debug\TGFS.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.

    Wisst ihr, was das Problem ist und wie es zu lösen ist?



  • Du musst die statischen objekte nochmals in einer .cpp datei deklarieren, die wirklich kompiliert wird:

    sf::Image TerrainSprite::Gras;
    sf::Image TerrainSprite::Wasser;
    sf::Image TerrainSprite::Fels;
    


  • Danke, das hat das Problem gelöst... 👍


Log in to reply