如何将自定义类指针转换为unsigned int

时间:2015-03-18 03:58:21

标签: c++ casting

我需要输入强制自定义类指针到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 ++方式克服这个问题的正确方法

1 个答案:

答案 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);
相关问题