先陈述一下情况。我看C++相关的书,最近好像类型转换都不直接用(type)var这样的形式了。但是照着书上写VC的时候却出现了错误。
//GetMenu()->AppendMenuA(MF_POPUP, static_cast<UINT>(menu.m_hMenu), "对话框");编译不能通过
GetMenu()->AppendMenuA(MF_POPUP, (UINT)(menu.m_hMenu), "对话框");//这个就能通过后来我换成这样,也成功了。
GetMenu()->AppendMenuA(MF_POPUP, reinterpret_cast<UINT>(menu.m_hMenu), "对话框");我的疑问就是,如果2个类型能进行转换的话,应该static_cast在编译期间都可以。reinterpret是无视类型的转换,难道UINT和HMENU 2个类型完全不相关而必须进行这样的转换,我觉得这样的可能性不大。
UINT是unsigned int, 而HMENU我找到下面的就不知道了。不知道他是个什么东西。
#if !defined(_MAC) || !defined(WIN_INTERNAL)
DECLARE_HANDLE(HMENU);
#endif这个情况怎么解释呢,另外各位一般写程序的时候是怎么进行转换的?请大家帮助我
//GetMenu()->AppendMenuA(MF_POPUP, static_cast<UINT>(menu.m_hMenu), "对话框");编译不能通过
GetMenu()->AppendMenuA(MF_POPUP, (UINT)(menu.m_hMenu), "对话框");//这个就能通过后来我换成这样,也成功了。
GetMenu()->AppendMenuA(MF_POPUP, reinterpret_cast<UINT>(menu.m_hMenu), "对话框");我的疑问就是,如果2个类型能进行转换的话,应该static_cast在编译期间都可以。reinterpret是无视类型的转换,难道UINT和HMENU 2个类型完全不相关而必须进行这样的转换,我觉得这样的可能性不大。
UINT是unsigned int, 而HMENU我找到下面的就不知道了。不知道他是个什么东西。
#if !defined(_MAC) || !defined(WIN_INTERNAL)
DECLARE_HANDLE(HMENU);
#endif这个情况怎么解释呢,另外各位一般写程序的时候是怎么进行转换的?请大家帮助我
int sad_var = static_cast<int>(happy_var);
1隐式类型转换就是不需要强制类型转换的自动转换么?
2那么非强制类型转换又什么意思?
3类层次的静态定位又是什么东西?家里茶饭不思,关机断水,在线苦等!!
2。人家没提你说的这个词啊?人家说的是从void*转换为其他指针类型吧?
3. 例如从基类指针转换为派生类指针HMENU应该是void*把,static_cash不能把指针转换为整型,大概这是你代码失败的原因