【问题标题】:Can't figure out my own code无法弄清楚我自己的代码
【发布时间】:2015-03-04 11:13:33
【问题描述】:

我很难弄清楚为什么我的代码不起作用。我没有其他人可以寻求帮助,所以我希望这里有人可以帮助我。

我正在使用 C++ 开发一款游戏,可以这么说,我需要切入我的土地。这是我现在拥有的代码:

这是在我的 main.cpp 中:

if(en1.getBottom() > jello1.getGroundHeight())
    {
        jello1.setHealth(jello1.getHealth() - 25);
        jello1.setGroundHeight((int)screen1.getScreenDimensions().y (int)jello1.getSize().y);
    }

if(jello1.getHealth() == 75)
    {
        jello1.update1(jello1, lane1, screen1);
    }

这是我的 Jello 课程的标题:

#ifndef JELLO_H
#define JELLO_H

#include"ScreenDimensions.h"
#include"Lane.h"

class Jello
{
public:

    sf::RectangleShape ground;

    void update1(Jello jello, Lane lane, ScreenDimensions screen);

private:

    sf::Vector2f mPositionJello;
    sf::Vector2f mSizeJello;
    sf::Color mColorJello;
    int mGroundHeight;
    int mHealth;
};

#endif // JELLO_H

这是我的 Jello.cpp 文件:

#include"Jello.h"

void Jello::update1(Jello jello, Lane lane, ScreenDimensions screen)
{
    jello.ground.setSize(sf::Vector2f((float)screen.getScreenDimensions().x / 8, 15.0f));
    jello.ground.setPosition(sf::Vector2f((float)lane.getLanePositionX(), (float)screen.getScreenDimensions().y - 10.0f));
}

我似乎无法找到为什么我的update1 函数不起作用。我用另一种方式编写了我的代码,它只在我的 main.cpp 中,但它有很多重复的代码,我希望它看起来更干净。

我试图减少我的代码以缩短这篇文章,但如果不清楚,我可以发布我的所有代码以提供帮助。

提前感谢任何花时间阅读本文并尝试帮助我的人。

【问题讨论】:

  • 乍一看:您应该通过引用传递参数

标签: c++ function sfml


【解决方案1】:

您的问题很模糊,但一目了然:您正在尝试对变量“jello, lane”等进行修改。您应该通过引用传递它们:

void update1(Jello &jello, Lane &lane, ScreenDimensions &screen);

(或使用指针)。关于passing by reference的更多信息

【讨论】:

    【解决方案2】:

    您正在按值传入jello,这意味着您正在创建对象的副本并更新它,而不是更新您传入的对象。

    要解决这个问题,只需通过引用传递它:

    void Jello::update1(Jello &jello, const Lane &lane, const ScreenDimensions &screen)
    //                        ^ here
    

    您应该通过 const-reference 传递其他两个对象以避免不必要的复制。请注意,这仅在您对这些对象调用的函数声明为 const 时才有效,它们可能应该是。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多