我是初学者并试图在此网站上找到答案,但我无法弄清楚如何解决我的特定 C++ OOP 问题。
简而言之:我想从子类实例访问和更改父类的值,但不知何故我的方法似乎不起作用。
示例:我的程序中有许多 Car
实例(使用新构造创建)。如果其中一个 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
}
最佳答案
这看起来像是一个问题,其中 observer pattern是正确的解决方案。
关于c++ - 从子类实例访问和更改父值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729378/