我需要输入强制自定义类指针到unsigned int值。这就是我累了。
Class A{
};
int main()
{
A* a = foo();
unsigned int handler = reinterpret_cast<unsigned int>(a);
return 0;
}
它发出警告
warning C4302: 'reinterpret_cast': truncation from 'A *' to 'unsigned int'
用C ++方式克服这个问题的正确方法
答案 0 :(得分:0)
该错误可能意味着您正在编译为64位目标,在这种情况下,指针为64位,将其重新解释为int意味着截断(因为int最多为32位)。
不确定你将如何使用处理程序,但更安全的方法是在c ++ 11可用时转换为uintptr_t。
http://en.cppreference.com/w/cpp/types/integer
如果包含<cstdint>
,则应该类似于
uintptr_t handler = reinterpret_cast<uintptr_t>(a);