c ++如何获取对象的类型?

时间:2011-05-12 14:09:01

标签: c++

我如何获得以下typeidT& object; T所在的位置:template<class T>。我正在使用c ++代码。我做了测试:

const std::type_info& ObjT= typeid(object);
std::cout<<"******the objT is: "<<&ObjT<<std::endl;

但它崩溃了。为什么呢?

3 个答案:

答案 0 :(得分:4)

如果您想要一个人类可读的名称,请使用name()方法:

std::cout<<"******the objT is: "<<ObjT.name()<<std::endl;

答案 1 :(得分:3)

你是否包括:

#include <typeinfo>

也许你应该发送

std::cout << typeid(object).name() << std::endl;

也许你正在做&amp;&amp; amp;在对象上。

查看示例here

答案 2 :(得分:0)

这是你在做什么?

#include <typeinfo>
#include <iostream>

template <typename T> 
struct S {
};

int main() {
    S <int> a;
    S <int> & object = a;
    const std::type_info & ObjT = typeid( object );
    std::cout << "******the objT is: "<< ObjT.name() <<  std::endl;
}

这适用于GCC 4.5.1。