繁体   English   中英

无法将参数 1 从 'sf::RenderWindow *' 转换为 'sf::RenderWindow &'

[英]cannot convert argument 1 from 'sf::RenderWindow *' to 'sf::RenderWindow &'

我一直在用 SFML 制作游戏,但遇到了这个问题:

无法将参数 1 从 'sf::RenderWindow *' 转换为 'sf::RenderWindow &'

我知道指针和东西的基础知识,但我仍然不确定如何正确使用它们,所以我不知道这意味着什么。 但无论如何,在游戏 class 中:

class Game {
public:
    RenderWindow renderWindow;
private:
    Player player{renderWindow,100,100 };
}

我初始化渲染窗口和播放器:

class Player
{
public:
   Player(RenderWindow &renderWindow,int x,int y) {
      draw(renderWindow,x, y);
}
      void draw(RenderWindow &renderWindow,int x,int y);
private:
     int x, y;
};

播放器.cpp:

void Player::draw(RenderWindow &renderWindow,int x,int y)
{
    //do stuff using renderWindow
}

而且我认为我应该使用引用调用构造函数,否则我会在 draw() 函数中遇到错误-它在被删除时无法引用。 我也尝试过使用指针,但我不确定如何正确调用这个构造函数/函数。

标记 & 表示引用,而 * 表示指针。 您正在尝试将指针传递给需要引用的 function。 简单地改变

class Player
{
public:
   Player(RenderWindow &renderWindow,int x,int y) {
      draw(renderWindow,x, y);
}
      void draw(RenderWindow &renderWindow,int x,int y);
private:
     int x, y;
};

class Player
{
public:
   Player(RenderWindow *renderWindow,int x,int y) {
      draw(renderWindow,x, y);
}
      void draw(RenderWindow *renderWindow,int x,int y);
private:
     int x, y;
};

void Player::draw(RenderWindow &renderWindow,int x,int y)
{
    //do stuff using renderWindow
}

void Player::draw(RenderWindow *renderWindow,int x,int y)
{
    //do stuff using renderWindow
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM