Способ определения типа производного класса с минимальным кодом в C++

У меня есть класс (скажем, A) со многими подклассами и 4 уровнями наследования. Я написал тип функции в базовом классе, чтобы определить тип класса, как показано ниже:

const string A::type() const {
    int status;
    const char *  realName;
    string name;
    const std::type_info &ti = typeid(*this);
    realName = abi::__cxa_demangle(ti.name(), 0, 0, &status);

    name= realName;
    int index =name.find_last_of(':');
    name = name.substr(index+1, name.length()-index-1);
    free((void *) realName);
    return name;
}

Это работает с этим кодом:

B tmp("temp");
    cout<<tmp.type() // Prints "B"

Но не с этим кодом:

A  tmp = B("temp");
    cout<<tmp.type() // Prints "A"

у меня есть vector<A> который может занять любой подкласс. Есть ли способ заставить A вернуть обратно тип производного класса?

0 ответов

Другие вопросы по тегам