Переменные x
и y
, объявленные в new_class
, представляют собой shadowing переменные с такими же именами, объявленными в base_class
.Это означает, что в любом методе члена new_class
имя x
относится к new_class::x
и , а не base_class::x
.
Просто удалите эти строки из определения new_class
:
int x;
int y;
И сделать те же члены в base_class
protected
вместо private
, чтобы new_class
также имел доступ:
class base_class{
protected:
int x;
int y;
Примечание: ваш код имеет утечку памяти, так как вы никогда не delete object
после его выделения.Всегда delete
то, что вы new
, и не используйте new
, если вам действительно не нужно.