C++出现错误类型error C2664的解决方案

最近在学习C++的代码编程,打算把课后的代码实验再做一遍。对于c++小白的我而言,出现没见过的错误真的难受,一下就是一项。

定义如下形式的字符串char *testString = “This is test string…”

先看代码:

#include <iostream>
#include <string>  // 字符串赋值需要用到这个指针
using namespace std;

class Student
{
private:
	char num[10]; // 学号可以看做固定长度的字符串,可以放在一个字符数组中
	char* name;   // 姓名可以声明为字符指针类型
	int score;    // 声明成绩

public:
	void setstudent(char* nump, char* namep, int scor)
	{
		strcpy_s(num, nump); // 注意字符数组赋值方式
		name = namep;
		score = scor;
	}

	void Show()
	{
		cout << "学号:" << num << endl;
		cout << "姓名:" << name << endl;
		cout << "成绩:" << score << endl;
	}
};

int main()
{
	Student Geoge;
	Geoge.setstudent("040120518", "George", 80);
	Geoge.Show();
	return 0;
}

在编写倒数第四行 Geoge.setstudent(“040120518”, “George”, 80); 的时候编译器显示这段代码错误,运行后显示为C2664错误,这个错误对我这个c++小白来说真的不知道该怎么办?书上给的代码就是这样的,怎么到了我这里就不对了呢,尝试根据现有知识进行改动,甚至将变量的类型改了,但感觉这就不符合题目想要我学的知识内涵了,觉得不妥,查找了多方资料后发现只要进行一个字修改即可,噗,我吐血了。

具体步骤:

一、标签页点击项目,下拉找到自己的项目名称
二、找到 C/C++ -> 语言 ->符合模式 ->将‘是’改为‘否’

如下图所示
在这里插入图片描述

改完之后对代码重新编译,发现 Geoge.setstudent(“040120518”, “George”, 80); 不再报错,代码顺利执行。

在这里插入图片描述

  • 24
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
### 回答1: 这个错误是因为在C语言中,有些函数要求传入的字符串参数必须是常量字符串(const char*),而不是普通的字符(char)。为了解决这个问题,您可以将字符转换为字符串并传递给函数,例如: ``` char c = 'A'; char str[2] = {c, '\0'}; printf("%s", str); ``` 或者,您可以使用字符数组,例如: ``` char c = 'A'; const char* str = &c; printf("%s", str); ``` ### 回答2: 在C语言中,出现"invalid conversion from 'char' to 'const char*'"错误通常是因为尝试将char类型的数据直接转换为const char*类型的数据。要解决这个问题,可以通过以下方法来处理: 1. 检查变量类型:首先,确认出现错误的地方是否确实需要将char类型转换为const char*类型。如果不需要转换,可以考虑修改代码逻辑,避免这种转换。 2. 强制类型转换:如果确实需要将char类型转换为const char*类型,可以使用强制类型转换来解决问题。例如:const char* str = (const char*)&char_variable; 3. 字符串拷贝:如果需要将char类型的字符添加到const char*类型的字符串中,可以使用字符串拷贝函数,如strcpy、strncpy等。例如:strcpy(str, &char_variable); 4. 字符数组:如果需要将一个char数组的内容赋值给const char*类型的指针,可以声明一个char数组,并将其地址赋给const char*类型的指针。例如:char str[] = "example"; const char* ptr = str; 5. 避免修改字符串常量:如果出现错误的地方是尝试修改字符串常量,可以考虑将字符串常量复制到一个可修改的字符数组中,然后对字符数组进行操作。例如:char str[] = "example"; str[0] = 'E'; 总之,解决"invalid conversion from 'char' to 'const char*'"错误需要仔细检查代码逻辑,确定是否需要类型转换,并根据需要选择适当的解决方案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值