void* 赋值给int

场景:把const void *赋值给int型变量可行吗解决方法

把const void *赋值给int型变量可行吗
最近在看一个程序,有把const void *赋值给int型变量这样的作法,如下:
C/C++ code

int idxBuffer = (int)result.Context();
//Context原型
const void* Context() const
{
    return m_pContext;
}
//m_pContext定义
const void *m_pContext;



在VS2005中编程出现警告 warning C4311: 'type cast' : pointer truncation from 'const void *' to 'int'
有知道怎么消除吗?还有这种用法会不会造成内存异常?
请指教,谢谢!

------解决方案--------------------
C/C++ code
int idxBuffer = *(int*)result.Context();

------解决方案--------------------
值就是那个值,会不会内存异常关键是接下来你要拿这个值做什么。
------解决方案--------------------
pointer truncation // 指针截断
64位系统?
#pragma warning ( disable:4311 )
------解决方案--------------------
只是警告而以,没什么大不了的,只有你自己知道自己在做什么,就没有问题了
当然,我喜欢1楼的转换方式.
------解决方案--------------------
指针本身就是一个数值 付给int当然没有问题
------解决方案--------------------
只要你赋值的时候自己控制好了类型,你再取的时候再转回来,void就是通用类型
------解决方案--------------------
如果要把指针换成一个整数。
那是最好使用 LONG_PTR .
因为指针可能是 64 位的,而 int 只是 32 位的。

使用 reinterpret_cast。

------解决方案--------------------
这种警告不用管