savostin
@savostin
Еще один программист

Как получить доступ к наследованной переменной из функции базового класса?

Подскажите ответ на нубский вопрос. Есть такая конструкция:
class Base {
protected:
   int myvar;
   void useBaseVar(){
	   cout << myvar << endl; // ожидается вывод 42, а не 10
   }
public:
   Base() : myvar(10) {}
   ~Base() {}
};


class Another : public Base {
protected:
   int myvar;
public:
   Another() : Base(), myvar(42) {}
   ~Another() {}
   void useMyVar() {
	   useBaseVar();
   }
};



Another a;
a.useMyVar();
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
xorknown
@xorknown
Будут проблемы - решайте
Не уверен, что вы код написали верно. Но чтобы просто получить доступ к переменной имя которой вы скрыли,
достаточно просто написать имя базового класса::переменная(Base::myvar).
Вопрос в другом, нужна ли вам переменная myvar в Another?
UPD: неправильно прочитал.
Инициализируйте переменную myvar в наследуемом классе. В Another у вас совсем другая переменная которая никак не относится к myvar base, просто уберите ее.
Если вы хотите инициализировать myvar в конструкторе то вам надо завести конструктор base принимающий аргумент
class Base {
protected:
   int myvar;
   void useBaseVar(){
     cout << myvar << endl; // вывод 42
   }
public:
   Base() : myvar(10) {}
   Base(int  val) : myvar(val) {}
   ~Base() {}
};


class Another : public Base {
public:
   Another() : Base(42) {}
   void useMyVar() {
     useBaseVar();
   }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы