2016-02-28 2 views
-3

Как использовать динамическую переменную наследуемым. Образец;C++ и Sfml Inheritance

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 
} 

Когда я запускаю свою игру, меняя значения в классе не меняет класс б.

Как исправить это.

Я надеюсь, что поймем меня. Спасибо, что помогли.

+0

Вы могли бы сделать чистую версию своего кода? И опишите в одном или двух предложениях, что должно произойти? –

+0

İ отредактировал мой код. – caatayk

+0

Тогда, не могли бы вы дать ему правильный отступ? Не могли бы вы поместить небольшой фрагмент кода, используя класс a или класс b? –

ответ

0

Потому что я предполагаю, что вы используете два разных объекта.

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

Вы используете наследование неправильно. Вы можете передать ссылку на объект ракеты, чтобы использовать в нем.

Возможно, вы захотите поделиться своим основным кодом с нами.

+0

Я делаю, но я говорил о его очень длинном коде. Я хочу использовать динамическое положение carSprite (sf :: vector2f), я использую класс ракеты. но класс ракеты всегда одинаковый. Не меняйте положение автомобиля в ракетном классе. Извините, мой плохой английский. – caatayk

+0

Нет проблем. Могу ли я увидеть вашу основную функцию, по крайней мере, только соответствующие коды для ракет и автомобилей? – sunofkyuss