переопределение родительской переменной класса в конструкторе дочернего класса - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь выяснить, как изменить родительскую переменную в конструкторе дочернего класса.То, что у меня сейчас есть в теле конструктора, 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;
}

1 Ответ

0 голосов
/ 16 мая 2018

drawable::bounce и wall::bounce - это один и тот же объект, а именно член bounce, который находится в подобъекте базового класса drawable объекта wall. Так что ваш текущий оператор присваивания ничего не делает.

Вы, вероятно, хотите следующее:

this->bounce = bounce;

Устанавливает член bounce равным параметру bounce. Обратите внимание, что bounce без дополнительной квалификации относится к параметру, поскольку параметр находится в самой вложенной области видимости.

Другое возможное решение - предоставить drawable другой конструктор, который принимает параметр bounce, и передать bounce из конструктора wall в конструктор drawable. Преимущество этого в том, что bounce устанавливается только один раз, а не инициализируется пустым, а затем переназначается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...