在我的项目中,我有矢量基类类型,我用对象派生类填充它。如何获取有关向量中类型的信息? 我尝试过类似的东西,但它无法正常工作。
#include <iostream>
#include <typeinfo>
#include <vector>
using namespace std;
class A {
public:
virtual ~A() {}
};
class B : public A {
public:
~B() {}
};
int main() {
vector<A *> wektor;
wektor.push_back(new B);
cout << typeid(wektor[0]).name();
return 0;
}
输出:
P1A
答案 0 :(得分:0)
如果你改变:
为:
cout<<typeid*(wektor[0]).name();
它将打印有关对象实际类型的信息,现在它只知道你有一个指针。
答案 1 :(得分:0)
当
typeid
应用于类型为多态类类型的glvalue表达式时,结果引用表示最派生对象类型的std::type_info
对象(即动态类型) glvalue指的是。
使用时:
cout<<typeid(wektor[0]).name();
您正在指针上调用typeid
。指针不是多态类型。通过解引用指针获得的对象是多态类型。
因此,如果要获取派生程度最高的对象的type_info
,则需要取消引用typeid
表达式中的指针。
cout << typeid(*wektor[0]).name();
// ^^