C++ 如何将自定义类指针转换为无符号int
我需要将自定义类指针转换为无符号的int值。这就是我所累的C++ 如何将自定义类指针转换为无符号int,c++,casting,C++,Casting,我需要将自定义类指针转换为无符号的int值。这就是我所累的 Class A{ }; int main() { A* a = foo(); unsigned int handler = reinterpret_cast<unsigned int>(a); return 0; } A类{ }; int main() { A*A=foo(); unsigned int handler=reinterpret_cast(a); 返回0; } 它给出了警告 警告C4302:“重新解释强制
Class A{
};
int main()
{
A* a = foo();
unsigned int handler = reinterpret_cast<unsigned int>(a);
return 0;
}
A类{
};
int main()
{
A*A=foo();
unsigned int handler=reinterpret_cast(a);
返回0;
}
它给出了警告
警告C4302:“重新解释强制转换”:从“A*”截断为“unsigned int”
<> P> >在C++方式中如何正确地克服这个问题 错误可能意味着你正在编译成一个64位目标,在这种情况下,一个指针为64位,重新解释为int,意味着截断(因为int最多为32位)。 不确定如何处理该处理程序,但更安全的方法是在c++11可用的情况下强制转换到uintptr\t 如果包含
,它应该是这样的:
uintptr_t handler = reinterpret_cast<uintptr_t>(a);
uintpttr\u t handler=reinterpret\u cast(a);
看起来很像您在64位平台上。unsigned int不够大,无法容纳64位指针。为什么首先要将指针转换为整数?这很少是一件有用的事情。你是对的,我正在构建64位。如何通过uintptr\t
实现它?我有C++11environment@NayanaAdassuriyauintptr\u t在中定义,一旦有了include,就可以像uintptr\u t handler=reinterpret\u cast(a)@techolic:实际上,::uintpttr\u t
是在stdint.h
中定义的。使用#include
只能保证您拥有std::uintpttr\u t
您是对的。请在回答中添加您的评论。因此,这将是明确的。tnx!