几个月之前,接触Android recovery源代码的时候,看ScreenRecoveryUI类的时候,那时候C++基础还不是特别好,一直不明白以下的 初始化 方式: 下面这个是Recovery的一个构造函数,代码位于:screen_ui.cpp,它的类的实现在screen_ui.h。 如下这个ScreenRecoveryUI类,这个类是继承于RecoveryUI类的: 这个文件在screen_ui.h class ScreenRecoveryUI : public RecoveryUI { public: ScreenRecoveryUI(); void Init(); C++新标准不再允许将常量字符串,作为字符指针使用。对此,msvc编译环境,会报错。对此,可以在工程属性中配置“多字节字符集”来 解决 这个问题。目前,使用QtCreator,同样也可以在Qt工程文件中去配置“多字节字符集”在Qt工程文件pro文件中,去掉。至此,完美 解决 该问题。 3、 char *变const char *容易,const char *变 char *麻烦。// char []类型转const char * 类型。//const char *类型转 char []类型。//const char *类型转 char *类型。 项目属性->C/C+±>语言->符合模式选项的含义 /permissive-:启用所有严格标准符合性编译器选项,并禁用大部分特定于 Microsoft 的编译器扩展(但有一些例外,比如 __declspec(dllimport))。 在 VS2019 版中此选项默认为开启状态。 /permissive- 符合性模式包括对两阶段名称 有一些C++程序在VS2017上运行会有一些错误,而在vc6.0中却能运行出来。接下来的一个程序就是我在vs2017上运行出现错误,而在vc6.0上运行出来。但我已经通过分析vs2017上错误来源 解决 了该问题,并以此作为分享。这样就能在vs2017成功运行出来了。在vs2017运行会显示。 Qt配置多字节字符集, 解决 无法 从const char [] 转换 char *”的问题 1.问题描述 手上有一个项目,开发环境为Qt5.9.9+vs2015,由于种种原因,使用QtCreator作为IDE进行项目的开发工作。 项目中有一个版本比较旧的第三方库,没有源码,提供的头文件中充斥着下面这种用法: void func( char *str = "xxxx"); // 第三方库头文件中太多 char *str = "xxxx"这样的用法却又没办法修改 问题就出在 char *str = "xxxx"这里,C+ C++错误提示: 无法 将参数 1 从“const char [7]” 转换 为“ char *” 或“const char *”类型的值不能用于 初始化 char *”类型的实体 用VS2017或VS2019写C++代码时,发生以下两个错误之一时,均可按以下两个方法 解决 : onst char * pc_ char = 0; char *cP = pc_ char ; ////////////////////////////////////////////////// const char * pc_ char = 0; char *cP = const_cast(pc_ char ); //提示你错误的指针,但是可以编译通过 const_cast  //将c