私は初心者で、この Web サイトで答えを見つけようとしましたが、特定の C++ OOP 問題を解決する方法を見つけることができませんでした。
短い: サブクラスのインスタンスから親クラスの値にアクセスして変更したいのですが、どういうわけか私のアプローチがうまくいかないようです。
例:Car
私のプログラムには多くのインスタンスがあります (新しい構造で作成されました)。オブジェクトの 1 つがCar
衝突を検出すると、すべてのCar
インスタンスがその動きを反転させる必要があります。衝突を登録したCar
は、親のChangeSpeed
メソッドを呼び出すか、speed
値を直接変更する必要があります。
問題: 速度変数が更新されていないようです。この特定のコード/アプローチに問題がありますか、それとも別の場所で問題を検索する必要がありますか?
// SpeedControl.h ------------------------------
class SpeedControl
{
public:
void ChangeSpeed(int);
protected:
int speed;
};
class Car:
public SpeedControl
{
public:
void MoveCar();
void DetectCollision();
private:
int position;
};
// SpeedControl.cpp ------------------------------
#include SpeedControl.h
SpeedControl::SpeedControl(void)
{
speed = 10;
}
SpeedControl::~SpeedControl(void)
{
}
SpeedControl::ChangeSpeed(int _value)
{
speed *= _value;
}
// Car.cpp ------------------------------
#include SpeedControl.h
Car::Car(void)
{
position = 100;
}
Car::~Car(void)
{
}
Car::MoveCar()
{
position += speed; // speed should be accessible?
}
Car::DetectCollision()
{
speed *= (-1); // inverse speed variable in parent class to inverse direction of ALL cars
// alternative:
// ChangeSpeed(-1); // call parent function to inverse speed
}