在C++怎么用程序判斷一個變量、函數(shù)、實例是否為某個類型,以及怎樣得到這個類型的名字并作為字符串輸出
6 回答

慕粉4447226
TA貢獻(xiàn)2條經(jīng)驗 獲得超0個贊
使用元模板編程可以實現(xiàn):
template <typename T1,typename T2>
struct IsSame{
static const bool Value=false;
};
template <typename T>
struct IsSame<T>{
static const bool Value=true;
};
如果兩個模板參數(shù)相同,那么IsSame會特化為第二種形式,此時Value的值為真。
元模板編程是圖靈完整的,還可以完成很多東西,例如判斷繼承關(guān)系、判斷類里面是否有某種符號、判斷類是否有純虛函數(shù)、使用c++98判斷表達(dá)式類型等等。這些功能都是編譯期實現(xiàn)的,沒有運算負(fù)擔(dān)。不好的就是有點難學(xué),編譯速度會變慢。樓主可以了解一下boost庫。

侃侃無極
TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊
if(sizeof(int)==sizeof(name))printf("變量name是 int 數(shù)據(jù)類型");
簡單的數(shù)據(jù)類型可以,需要先檢查一下你需要判斷的數(shù)據(jù)類型的字節(jié)數(shù)各為多少?如果有重復(fù)的就比較麻煩啦。例如:float與long就都是4,就看你的需求啦。
- 6 回答
- 0 關(guān)注
- 5007 瀏覽
添加回答
舉報
0/150
提交
取消