2014-02-08 56 views
-2

已与SFML和游戏游戏编程一会儿打转转,但我的“预期的表达”预计表达

这里是我的代码 .h文件中

#include <SFML\Graphics.hpp> 

    using namespace std; 

    class TileSet 
    { 
    public: 
    TileSet(int firstTile, int tileWidth, int Tileheight, string filename); 
    sf::Texture* GetTileSet() const; 
    int FirstTileNo(); 
    int TilesCount(); 

    private: 
    sf::Texture tileset; 
    int firstTileNo; 
    int tilesCount; 
    }; 

.cpp文件

#include "TileSet.h" 

    TileSet::TileSet(int firstTile, int tileWidth, int tileHeight, 
      string filename):firstTileNo(firstTile) 
    { 
    tileset.loadFromFile(filename); 

    int tilesInWidth = tileset.getSize().x/tileWidth; 
    int tilesInHeight = tileset.getSize().y/tileHeight; 

    tilesCount = tilesInWidth * tilesInHeight; 
    } 

    sf::Texture* TileSet::GetTileSet() const 
    { 
    return tileset* ; 
    } 

错误指向“返回tileset *;”声明

+3

好耶。你期望'titleset *'做什么?这是一个语法错误。 – 2014-02-08 22:14:25

+0

如果你想返回'tileset'的地址,使用'&tileset'。 – wimh

+0

对不起,我忘了提及我试过“&tileset”,并且我得到了那个“错误C2440:'return':无法从'const sf :: Texture *'转换为'sf :: Texture *' – Ahmad

回答

1

Wimmel在他的评论中是正确的。您需要更改tileset*;&tileset;这将返回一个指向您的tileset

编辑: 应该是return &(const sf::Texture)tileset;,但我不知道这是你想要的。我不是C++专家,const正确性不是我的强项,所以我可能会对const正确性做更多的研究,以确保这是您真正想要的或不是。

+0

对不起,我忘了提及我尝试了“&tileset”,并且我得到了“错误C2440:'return':无法从'const sf :: Texture *'转换为'sf :: Texture *' – Ahmad

+0

这是因为你的函数是GetTileSet()'const'我会编辑我的回答 – vane

+0

是的,这解决了它 谢谢 – Ahmad