一种用c ++中的最小代码确定派生类类型的方法

时间:2015-11-01 21:54:13

标签: c++ c++11 abi typeinfo demangler

我有一个类(Say A),有许多子类和4级继承。我在Base类中编写了函数类型来确定类的类型,如下所示:

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 个答案:

没有答案