Передача 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 шт):
Повторная декларация name в классе наследнике прячет от кода наследника родительский член класса. До родительского name можно добраться, но подозреваю, что Вам нужно просто убрать string name; из A.
class A: public Base
{
public:
//string name;