如何獲取以下typeid
:T& object
;其中T
是:template<class T>
。我正在使用C++代碼。我做了測試:C++如何獲取對象的類型?
const std::type_info& ObjT= typeid(object);
std::cout<<"******the objT is: "<<&ObjT<<std::endl;
但它崩潰了。爲什麼?
如何獲取以下typeid
:T& object
;其中T
是:template<class T>
。我正在使用C++代碼。我做了測試:C++如何獲取對象的類型?
const std::type_info& ObjT= typeid(object);
std::cout<<"******the objT is: "<<&ObjT<<std::endl;
但它崩潰了。爲什麼?
是否包含:
#include <typeinfo>
,也許你應該送
std::cout << typeid(object).name() << std::endl;
也許有一個事實的問題,你是在對象上做& &。
看看例子here
以及如何在ObjT中保存類型?是的,我包括庫typeinfo – 2011-05-12 14:15:42
我做了檢查,但它仍然不打印typeid :(。爲什麼? – 2011-05-12 14:16:45
@JustMe:你不是真的保存typeinfo,你保存一個引用,如果你想保存它你應該刪除&'s。 – 2011-05-12 14:17:45
如果你想要一個人類可讀的名稱,使用方法name()
:
std::cout<<"******the objT is: "<<ObjT.name()<<std::endl;
這是你在做什麼?
#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。
它在運行時崩潰,還是無法編譯? – 2011-05-12 14:13:34