簡體   English   中英

我如何使用type_info進行類型轉換?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM