Как определить что тип обьекста был приведен к базовому классу в C++
допустим есть код:
class A
{
public:
int a;
};
class B : public A
{
public:
float b;
};
class C : public A
{
public:
bool c;
};
int someF(A base)
{
return base.a;
}
float someJ(A base)
{
// if (base be_castet B) {
// return base.b;
// }
}
int main()
{
B b;
someJ(b);
}
здесь в main мы приводим тип B к типу A. как я могу узнать в функции someJ, что аргумент base на самом деле был типа B, до его передачи в качестве аргумента?
Ответы (1 шт):
Автор решения: Никита Самоуков
→ Ссылка
Добавить в A переменную cl.
В конструкторах классов её задать 1 2 3.
Потом можно считать значение cl и узнать какой это был класс.