不能将 "const char *" 类型的值分配给类型 "char" C OOP 的实体
a value of type "const char *" cannot be assigned to an entity of type "char" C OOP
我正在创建一个类来计算C++中用户的分数,我遇到了一个简单但令人讨厌的问题。我知道错误意味着什么,但我不知道如何修复它,更改为字符串实际上修复了问题,但这不是我想做的。
以下是错误:const char*"无法分配给"char 类型的实体
代码
#include <string>
using namespace std;
class Gradecalc
{
public:
Gradecalc()
{
mark = 0;
}
int getmark()
{
return mark;
}
void setmark(int inmark)
{
mark = inmark;
}
void calcgrade()
{
if (mark >=70)
{
grade = "A"; //**ERROR IS HERE**
}
}
char getgrade()
{
return grade;
}
private:
int mark;
char grade; //VARIABLE IS DECLARED HERE
};
C++有两种类型的常量,它们由字符组成——字符串文字和字符文字。
- 字符串文字用双引号括起来,类型为
const char *
- 字符文字用单引号括起来,类型为
char
字符串文字允许多个字符;字符文字只允许使用一个字符。这两种类型的文字不兼容:您需要为赋值的左侧提供兼容类型的变量或常量。由于您将grade
声明为char
,因此需要更改代码以使用字符文字,如下所示:
grade ='A';
C和C++使用双引号表示"字符串文字",这与"字符文字"非常不同。
char
(带符号)是一种能够在编译器的默认字符集中存储字符表示的类型。在现代西方电脑上,这意味着ASCII,这是一个需要7位加1的符号的字符集。因此,char
通常是一个8位值或字节。
字符文字是使用单引号形成的,因此'A'
的计算结果为ASCII代码65。('A' == 65
)。
另一方面,"A"
使编译器将char(65)+char(0)写入输出程序的一部分,然后将表达式"A"
求值为该序列的地址;因此,它计算为指向char序列的指针,但它们在程序数据本身中,因此不可修改,因此为const char*
。
你想要
grade = 'A';
更换
grade = "A";
通过
grade = 'A';
您只能将字符分配给字符,不能将字符串分配给单个字符,这就是您要做的
Grade
是char
变量,"A"
是const char*
类型。
不能将const char*
分配到char
变量中。
双引号表示const char*
,单引号表示char。
要解决此问题,请替换:
grade="A"
带有
等级="A"。
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何将整数分配给 char 类型的变量
- 将char类型指定给int以打印相应的ASCII字符
- 在 C++11 标准中,为什么要依赖 char 类型实现?
- 如何使用CIN将输入整数值获取到char类型变量中
- 有没有办法比较用 int 初始化的 char 类型的数组的 2 个元素
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 不能将 "const char*" 类型的值分配给类型 "int" 的实体
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- 'char' c++ 类型的数组中的最后一个符号
- C++:无法使用条件类型在模板函数中使用 'double' 类型的 lvalue 初始化 'char*' 类型的参数
- 不能将 "const char *" 类型的值分配给类型为 "LPSTR" 的实体
- 如何使用boost.asio读取整个Char类型的数据
- 如何从const char *类型字符串中删除新线字符
- 为什么允许将字符串文字分配给 C++ 中 char * 类型的指针
- 如何将 char 类型数组传递给函数并将第一个字符数组复制到第二个图表数组并使用 c++ 进行比较
- 在char*类型上使用static_cast获取地址,并获得24位和48位地址
- CIN使用char类型阵列
- 错误:“ const char*”类型的操作数和“ const char [7]”类型为二进制“操作员 ”