Как определить что тип обьекста был приведен к базовому классу в 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 и узнать какой это был класс.

→ Ссылка