我试图弄清楚如何在子类构造函数中更改父变量。我现在在构造函数体drawable::bounce = wall::bounce
中所拥有的内容似乎不会覆盖drawable::bounce
默认值。这样做的正确方法是什么?
drawable class:
class drawable {
protected:
window w;
vector location;
vector size;
vector bounce;
wall class构造函数:
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;
}
答案 0 :(得分:4)
drawable::bounce
和wall::bounce
是同一个对象,即在bounce
对象的drawable
基类子对象中找到的成员wall
。所以你当前的任务说明没有做任何事情。
您可能需要以下内容:
this->bounce = bounce;
这会将bounce
成员设置为等于bounce
参数。请注意,没有附加限定条件的bounce
引用参数,因为参数位于嵌套范围内。
另一种可能的解决方案是给drawable
另一个带有bounce
参数的构造函数,并将bounce
构造函数中的wall
传递给drawable
构造函数。这样做的好处是bounce
只设置一次,而不是初始化为空,然后重新分配。