我正在创建一个用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
};
答案 0 :(得分:9)
C ++有两种类型的常量,包括字符 - 字符串文字和字符文字。
const char *
char
。字符串文字允许多个字符;字符文字只允许一个字符。两种类型的文字不兼容:您需要为赋值的左侧提供兼容类型的变量或常量。由于您将grade
声明为char
,因此您需要更改代码以使用字符文字,如下所示:
grade ='A';
答案 1 :(得分:0)
替换
grade = "A";
通过
grade = 'A';
你只能将char分配给char,你不能将字符串分配给单个char,这就是你要做的。
答案 2 :(得分:0)
Grade
是char
变量,"A"
是const char*
类型。
您无法将const char*
分配到char
变量。
双引号表示const char*
,单引号表示char。
要解决此问题,请替换:
级= “A”
与
级= 'A'。
答案 3 :(得分:0)
C和C ++使用双引号表示“字符串文字”,非常与“字符文字”不同。
char
(已签名)是一种能够在编译器的默认字符集中存储字符表示的类型。在现代的西方PC上,这意味着ASCII,这是一个需要7位的字符集,加上一个用于符号的字符集。因此,char
通常是8位值或字节。
使用单引号形成字符文字,因此'A'
计算为ASCII代码65.('A' == 65
)。
另一方面,"A"
使编译器将char(65)+ char(0)写入输出程序的一部分,然后将表达式"A"
计算为该序列的地址;因此它评估指向char序列的指针,但它们在程序数据本身中,因此它们不可修改,因此const char*
。
你想要
grade = 'A';