在我的项目中,我有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/

10-13 06:52