В C++ существует ли стандартный способ создания функции в базовом классе, который может использовать переменные производных классов?Функции базового класса, которые используют переменные производного класса
class Foo{
private:
int x;
public:
Foo(){
x = 2;
}
void print(){
std::cout << x << std::endl;
}
};
class Derived : public Foo{
private:
int x;
public:
Derived(){
x = 4;
}
};
void main()
{
Derived a;
a.print();
}
Этот код печатает переменную базового класса (2). Есть ли способ сделать функцию, используемую многими производными классами, использовать частные переменные класса, не передавая их в качестве параметров?
Редактировать: Мое намерение состоит в том, чтобы избежать написания того же кода для каждого производного класса. Например, я хочу get_var() во всех, но эта функция должна возвращать переменную этого собственного класса. Я знаю, что могу делать виртуальные и переопределять, но я искал способ, который мне не нужно писать снова и снова.
Базовый класс должен не знают ничего о своих производных типах. Требовать, чтобы это был плохой дизайн. – juanchopanza
Вам нужно будет реализовать виртуальный метод 'getA'. –
Если вы объявите 'x' защищенным в Foo и не объявите его снова в Derived. Это то, что вы хотите? – Albi