我有一个类(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返回派生类的类型?