Передача this в качестве параметра переменной типа родительского класса

Есть класс Base. От него наследуется класс A. В методе класса A вызывается функция fun, куда передаётся указатель на объект класса A. Однако, аргументом оказывается указатель на класс Base.

Вопрос: как сделать, чтобы аргумент object функции fun, тип которого должен быть Base, ссылался на объект класса A?

Пример неправильной работы:

Ввод: class_name

Вывод:

Class A: class_name

fun: default

Ожидаемое поведение:

Ввод: class_name

Вывод:

Class A: class_name

fun: class_name

#include <iostream>
using namespace std;
class Base
{
public:
    string name = "default";
};
void fun(Base* object)
{
  cout << "fun: " << object->name << endl;
}
class A: public Base
{
public:
    string name;
  A(string name) {this->name = name;};
    void fun1()
  {
    cout << "Class A: " << this->name << endl;
    fun(this);
  }
};
int main()
{
    string name;
    cin >> name;
    A a(name);
    a.fun1();
    return 0;
}

Ссылка на код: https://repl.it/@DmitriiNiechipo/LonelyOpulentChief


Ответы (1 шт):

Автор решения: Igor

Повторная декларация name в классе наследнике прячет от кода наследника родительский член класса. До родительского name можно добраться, но подозреваю, что Вам нужно просто убрать string name; из A.

class A: public Base
{
public:
    //string name;
→ Ссылка