Определить класс объекта

238
29 апреля 2018, 21:44

Есть ли стандартная ф-ция определения класса объекта?

class A { };
class B: public A { };
int main()
{
    B b;
    A *pa = &b;
    // false, а нужно что-то что выдает true
    cout << (typeid(*pa).hash_code() == typeid(B).hash_code());
    // true, а нужно что-то что выдает false
    cout << (typeid(*pa).hash_code() == typeid(A).hash_code());
    return 0;
}
Answer 1

Первый вариант легко реализовать (если включить RTTI и если класс полиморфный):

cout << (nullptr != dynamic_cast<B *>(pa));

Если класс не полиморфный то после приведения к базовому типу узнать оригинальный тип на основе RTTI нельзя.

Answer 2

decltype() - годится не только для классов, но и вообще для типов данных.

READ ALSO
Количество кратчайших путей

Количество кратчайших путей

Сейчас: Код ищет количество точек, через которое пройдёт алгоритм для возвращения в исходную позицию

235
Удаление элементов из очереди

Удаление элементов из очереди

Имеется часть кода:

231
Найти k1-количество одинаковых элементов в двумерном массиве c++; [требует правки]

Найти k1-количество одинаковых элементов в двумерном массиве c++; [требует правки]

Найти k1-количество одинаковых элементов в двумерном массиве c++;

193