E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体

简介: E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体

代码来自c++primer plus 6 第14章c++中的代码重用 ,第552、553页。

 

按照书中的源码,在visual studio 2017 中编译出现如下错误;

E0144

严重性 代码  说明  文件  行 禁止显示状态
错误(活动)  E0144 "const char *" 类型的值不能用于初始化 "char *" 类型的实体 c:\Users\dell\source\repos\worker0\worker0\worker0.cpp  47  

出现错误的位置:

char * Singer::pv[] = {"other", "alto", "contralto",
            "soprano", "bass", "baritone", "tenor"};

Singer::pv 出现的地方:

class Singer : public Worker
{
protected:
    enum {other, alto, contralto, soprano,
                    bass, baritone, tenor};
    enum {Vtypes = 7};
private:
    static char *pv[Vtypes];    // string equivs of voice types
    int voice;
......

我的解决办法是:强制类型转换。

char * Singer::pv[] = {(char*)"other", (char*)"alto", (char*)"contralto",
            (char*)"soprano", (char*)"bass", (char*)"baritone", (char*)"tenor"};

----

补充评论指出的另一种解决方法:

项目属性->C/C++->语言-->符合模式项选择否

相关文章
|
6月前
|
存储 编译器 C语言
c语言中char的作用类型
c语言中char的作用类型
205 0
|
1月前
|
SQL 存储 关系型数据库
SQL判断CHAR类型字段不为空的方法与技巧
在SQL查询中,判断一个CHAR类型字段是否不为空是一个常见的需求
|
2月前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
51 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
3月前
|
存储 自然语言处理 编译器
C语言中的char类型
C语言中的char类型
236 1
|
6月前
|
存储 关系型数据库 MySQL
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
本篇文章来讨论MySQL字段的字符类型选择并深入实践char与varchar类型的区别以及在千万数据下的性能测试
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
|
5月前
详细解读C++char类型函数
详细解读C++char类型函数
54 0
|
6月前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
161 0
|
6月前
|
C++
无法将参数1从“const char [6]”转换为“char *”的解决方法
无法将参数1从“const char [6]”转换为“char *”的解决方法
|
6月前
|
存储 自然语言处理 安全
【C++11保姆级教程】空指针(nullptr),long long类型,char16_t和char32_t类型
【C++11保姆级教程】空指针(nullptr),long long类型,char16_t和char32_t类型
156 0
【C++11保姆级教程】空指针(nullptr),long long类型,char16_t和char32_t类型
|
6月前
|
存储 人工智能 编译器
learn_C_deep_5 (温故知新、sigend char a = -128的深度理解、unsigned int类型的写法规范)
learn_C_deep_5 (温故知新、sigend char a = -128的深度理解、unsigned int类型的写法规范)