将 void* 转换为 T* const

Cast void* to T* const

我有一个void*指针p指向一个数据数组,其类型是T(主要是float),我想用这个更新数据指针 p,所以我用 reinterpret_cast<T*>(p) 转换它,然后修改值。问题是,p本身不能修改,所以为了安全我真的想把它转换成T* const,但我不知道如何正确地做。

T* const cp = reinterpret_cast<T* const>(p);
T* const cp = static_cast<T* const>(p);
T* const cp = static_cast<T* const>(reinterpret_cast<T*>(p));
....

我知道最简单的方法是复制 p 并使用复制的指针代替,这样原始的 p 永远不会被修改,只是想知道我如何才能实现同样的事情通过铸造。

转换指针将创建一个新的指针值,它与旧指针不同。 p 不会受到影响,期间。所以没有必要在这里玩 const