覆盖子类构造函数中的父类变量

时间:2018-05-16 00:03:48

标签: c++ class inheritance

我试图弄清楚如何在子类构造函数中更改父变量。我现在在构造函数体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;
}

1 个答案:

答案 0 :(得分:4)

drawable::bouncewall::bounce是同一个对象,即在bounce对象的drawable基类子对象中找到的成员wall。所以你当前的任务说明没有做任何事情。

您可能需要以下内容:

this->bounce = bounce;

这会将bounce成员设置为等于bounce参数。请注意,没有附加限定条件的bounce引用参数,因为参数位于嵌套范围内。

另一种可能的解决方案是给drawable另一个带有bounce参数的构造函数,并将bounce构造函数中的wall传递给drawable构造函数。这样做的好处是bounce只设置一次,而不是初始化为空,然后重新分配。