在C++中,沒有任何一種轉換操作符可以將成員指針轉換成其它類型數據類型,那有沒有辦法獲取到成員指針的值呢?有的人會說可以通過sprintf,atoi等函數獲取.那有沒有更簡單通用的方法呢?答案是有的.我們可以通過template 和 union實現任何類型到另一兼容類型的(所謂兼容是指,兩種類型的大小一致)轉換操作符 ReinterpretCast<Dest,Src>.
在給出這一實現之前,我們先來先來探討一下另外一個實用宏: StaticAssert.
StaticAssert宏是利用這樣一個語法事實:不能將sizeof應用於任何非完全類型.下面是StaticAssert的實現:
接下來我們會給出ReinterpretCast<Dest,Src>的實現:
下面我們來寫一小段測試代碼:
輸出:
未經允許,請勿轉載.
Copyright © SammyLan