www.5129.net > C stAtiC CAst

C stAtiC CAst

静态类型转换关键字,是 C++ 编译器的新特性,C 编译器不支持这个关键字的; 主要用于将表达式转换成另一个数据类型,这个转换会经过编译器的合法性检查;

出现这个错误的原因可是“人力不可抗拒”之原因造成的,因为旧版本的 ON_WM_NCHITTEST 宏使用了 UINT (__thiscall CWzButton::* )(CPoint); 类型的类成员函数指针,其定义如下: #define ON_WM_NCHITTEST() \ { WM_NCHITTEST, 0, 0, 0, AfxSig_wp,...

static_cast在C++中用于将表达式的值转换为指定的类型,但没有运行时类型检查来保证转换的安全性。 主要有以下用法: (1)用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 (2)用于基本数据类型之间的转换,如把int转换...

前面的是C的风格,后面的是C++的风格(也是推荐使用的)。差别在于,static_cast更安全一些,对于指针操作的话,多了一些检查,例如无关指针就无法转换,父类指针向孩子指针,无法转换,常指针向非常指针无法转换,而前面的那个则是通吃,通常是下...

可能是你的某个响应函数的原型,用了 UINT作为返回值,而原本需要LRESULT

不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2010-05-13 11:35开发平台由VC6.0升级至VS2005,需要将原有的项目迁移,可能碰到类似错误: error C2440: 'static_cast' : cannot convert from '...

你说的是早期适用于VC6.0的消息映射函数方法,升级至VS2005以后,不能再这样使用,需做改变:把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE; 然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个...

原因:VC6程序在VS2008中编译 解决:将UINT改成LRESULT

static_cast在C++中用于将表达式的值转换为指定的类型,但没有运行时类型检查来保证转换的安全性。 主要有以下用法: (1)用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 (2)用于基本数据类型之间的转换,如把int转换...

static_cast操作符:该操作符用于非多态类型的转换,任何标准转换都可以使用他,即static_cast可以把int转换为double,但不能把两个不相关的类对象进行转换,比如类A不能转换为一个不相关的类B类型。static_cast本质上是传统c语言强制转换的替代...

网站地图

All rights reserved Powered by www.5129.net

copyright ©right 2010-2021。
www.5129.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com