[英]How do I typecast with type_info?
我已經存儲了一個指向type_info
對象的指針。
int MyVariable = 123;
const std::type_info* Datatype = &typeid(MyVariable);
我如何使用它來將另一個變量強制轉換為該類型? 我試過這個,但它不起作用:
std::cout << ((*Datatype)3.14) << std::endl;
使用類型轉換的函數形式不起作用:
std::cout << (*Datatype(3.14)) << std::endl;
只是你不能使用type_info
做到這一點。 此外,在您的示例中, DataType
不是類型 ,它是指向 type_info
類型的對象的指針 。 你不能用它來演員。 轉換需要類型 ,而不是指針或對象!
在C ++ 0x中,你可以這樣做,
int MyVariable = 123;
cout << (decltype(MyVariable))3.14 << endl;
cout << static_cast<decltype(MyVariable)>(3.14) << endl;
輸出:
3
3
在線演示: http : //www.ideone.com/ViM2w
我不認為這樣的鑄造可以做到。 假設你可以在運行時進行這樣的“動態”轉換(不是指dynamic_cast
)。 然后,如果您使用強制轉換的結果來調用函數,則編譯器不能再對參數進行類型檢查,您可以調用實際上不存在的函數調用。
因此,這是不可能的。
鑄字不是一個運行時的過程,這是一個編譯時的過程至少為你鑄造類型。 我不認為可以做到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.