【问题标题】:Expected an expression期望一个表达式
【发布时间】:2014-02-08 22:13:11
【问题描述】:

一直在玩 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* ;
    }

错误指向“return tileset*;”声明

【问题讨论】:

  • 好吧。你希望titleset* 做什么?这是一个语法错误。
  • 如果要返回tileset的地址,请使用&amp;tileset
  • 对不起,我忘了提我试过“&tileset”,我得到了“错误C2440:'return':无法从'const sf::Texture *'转换为'sf::Texture * '

标签: c++ sfml


【解决方案1】:

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

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

【讨论】:

  • 对不起,我忘了提我试过“&tileset”,我得到了“错误C2440:'return':无法从'const sf::Texture *'转换为'sf::Texture * '
  • 那是因为你的函数是 GetTileSet() const 我会编辑我的答案
  • 我仍然建议调查 const 的正确性。还有另一种方法可以做你想做的事情,我假设是将指针传递给tileset,并确保获得该指针的人不能修改对象。您可以将您的函数更改为 const sf::Texture&amp; TileSet::GetTileSet() const 并返回 tileset 而不使用修饰符。这只是你的起点isocpp.org/wiki/faq/const-correctness
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多