我正在尝试弄清楚如何更改子类构造函数中的父变量。我现在在构造函数主体中的内容 drawable::bounce = wall::bounce
似乎没有覆盖 drawable::bounce
默认值。执行此操作的正确方法是什么?
可绘制类:
class drawable {
protected:
window w;
vector location;
vector size;
vector bounce;
墙类构造函数:
wall::wall(window & w, const vector & start, const vector & end,
int update_interval, const vector& bounce):
rectangle(w, start, end),
filled(false),
update_interval(update_interval),
update_count(0)
{
drawable::bounce = wall::bounce;
}
最佳答案
drawable::bounce
和 wall::bounce
是同一个对象,即成员 bounce
在 drawable
中找到wall
的基类子对象目的。所以你当前的赋值语句没有做任何事情。
您可能需要以下内容:
this->bounce = bounce;
这设置了 bounce
成员等于 bounce
范围。注意 bounce
, 没有额外的限制,指的是参数,因为参数在最嵌套的范围内。
另一种可能的解决方案是给出 drawable
另一个采用 bounce
的构造函数参数,并传递bounce
来自 wall
构造函数到 drawable
构造函数。这样做的好处是 bounce
只设置一次,而不是初始化为空然后重新分配。
关于c++ - 在子类构造函数中覆盖父类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50360716/