c++ - reinterpret_cast a pointer as long 是什么意思?

标签 c++

我在我从事的项目中经常看到这种类型的代码:

reinterpret_cast<long>(somePointer)

我不明白这有什么意义。它通常用于用户定义的类, 也就是说,somePointer 是指向用户定义类实例的指针。

感谢您的帮助

最佳答案

它用于将指针的地址转换为其数字表示并将其存储为 long .

当您需要在不支持实际指针的特定上下文中存储指针时,通常会使用它。例如,一些 API 允许您传递一个数字键,它们会在该 API 的任何回调中返回给您。您可以创建一个对象并将其转换为一个数字并将其提供给 API。然后在回调中,您将数字转换回带有 pointer=reinterpret_cast<type*>(number) 的指针。然后访问您的数据。

关于c++ - reinterpret_cast a pointer as long 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17880960/

相关文章:

java - JNI_CreateJavaVM函数方法不起作用,无法调试

c++ - 修改控件时回调的速率限制

c++ - 将特定级别的所有警告视为错误,但不将下一级别的警告视为错误

c++ - 如何对模板类内的嵌套类使用作用域解析运算符?

c++ - 对以副作用为目的的函数进行单元测试

c++ - 类中的静态字符串常量与常量的命名空间 [c++]

c++ - 虚拟模板设计

c++ - 如何绑定(bind)到 vector<>::at?

c++ - 使用 char* 运算符的随机输出

c++ - 无法将类中的输入函数与带参数的函数分开