![](/img/trans.png)
[英]How to assign min of uint32_t::max and uint64_t in type safe manner?
[英]How can I store a uint32_t or uint64_t in a void pointer
我有一個 uint32_t(將來可能會變成 uint64_t)變量。 我使用的其中一個庫中有一個 function,它允許向它傳遞一個空指針。 如何將 uint32_t 傳遞給此 void 指針:
uint32_t myEntity = 1242242;
// not a pointer; so, error about invalid conversion
actor->userData = static_cast<void *>(myEntity);
我不能使用指向此原始類型的指針,因為該值可能來自參數或類似參數,並且由於它是一個 uint,所以我不想為它使用引用。
有什么方法可以將這個值設置為空指針嗎? 這樣,我就可以以相同的方式檢索它,而無需在堆中創建值以使其正常工作。 否則,我將需要管理對象的銷毀,以免造成 memory 泄漏。
對於您正在嘗試的內容,您需要使用reinterpret_cast
而不是static_cast
,例如:
uint32_t myEntity = 1242242;
actor->userData = reinterpret_cast<void*>(myEntity);
uint32_t myEntity = reinterpret_cast<uint32_t>(actor->userData);
由於您提到該值將來可能會更改為uint64_t
,請注意在這種情況下您必須將代碼編譯為 64 位可執行文件(如果您還沒有),否則void*
不會很大超過最高uint32_t
值的足夠值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.