在我的项目中,我有vector基类类型,并用对象派生类填充它。如何获取有关 vector 类型的信息?
我已经尝试过类似的方法,但是无法正常工作。
#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
最佳答案
从C++11 Standard:
使用时:
cout<<typeid(wektor[0]).name();
您在指针上调用
typeid
。指针不是多态类型。通过取消对指针的引用获得的对象是多态类型。因此,如果要获取派生程度最高的对象的
type_info
,则需要在typeid
表达式中取消引用指针。cout << typeid(*wektor[0]).name();
// ^^
关于c++ - C++ typeid。如何指向派生类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48102733/