【问题标题】:C++ and Sfml InheritanceC++ 和 Sfml 继承
【发布时间】:2016-06-11 05:20:48
【问题描述】:

如何通过继承来使用动态变量。样品;

 class car
{
public:
    car();
    sf::Vector2f whereİsCar();
    void event(); //veryLong code = change spriteCar Position

protected:
  sf::Sprite spriteCar;

};

car::car()
{

    spriteCar.setPosition(300, 10);


}
car::Update()
{

    cout << spriteCar.position.x; << " " << spriteCar.position.y; // example Console : 550 210


}

class Rocket : public car

{

public:

    Rocket();
    void collideCar();
    void update();

private:
    sf::Sprite spriteRocket;

}

void Rocket::collideCar()
{

  cout << spriteCar.position.x; << " " << spriteCar.position.y; // Console : 300 10
}

当我运行我的游戏时,改变类中的值不会改变类b。

我该如何解决。

我希望能理解我。 感谢您的帮助。

【问题讨论】:

  • 你能制作一个干净的代码版本吗?并用一两句话描述应该发生的事情?
  • 那么,你能给它一个适当的缩进吗?你能放一小段代码使用 class a 或 class b 吗?
  • 为什么rocket::collideCar 和car::Update 做同样的事情,甚至没有调用它? car::Update 和 rocket::update 的文字不同是否正常?我猜运行一切的代码一定是一个循环调用事件,然后在火箭或汽车上更新,对吧?

标签: c++ class inheritance sfml


【解决方案1】:

因为我假设您使用的是两个不同的对象。

Car car();
Rocket rocket();
car.event() //spriteCar's position changed inside car object. Not relevant to rocket object.

您使用继承错误。您可以传递对火箭对象的引用以在其中使用。

也许您可能想与我们分享您的主要代码。

【讨论】:

  • 我有,但我说它的代码很长。我想使用动态位置 carSprite (sf::vector2f),我使用火箭类。但火箭班总是一样的。火箭班不会改变车位。对不起我的英语不好。
  • 没问题。我可以看到您的主要功能至少只有与火箭和汽车相关的代码吗?
猜你喜欢
  • 2021-01-04
  • 1970-01-01
  • 2013-07-28
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2011-06-16
相关资源
最近更新 更多