VS2017中报错:(53) : 无法将参数 2从“const char [7]”转换为“char *” 5

#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;classTeacher{public... #define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;class Teacher{public: Teacher(int id, char *name) { cout << "Teacher (int ,char*).." << endl; //赋值id m_id = id; //赋值name int len = strlen(name); m_name = (char*)malloc(len + 1); strcpy(m_name, name); } void printT() { cout << "id = " << m_id << ", name = " << m_name << endl; } //显示的提供一个拷贝构造函数,来完成深拷贝动作 Teacher(const Teacher &another) { m_id = another.m_id; //深拷贝动作 int len = strlen(another.m_name); m_name = (char*)malloc(len + 1); strcpy(m_name, another.m_name); } ~Teacher() { cout << "~Teacher()。。。" << endl; if (m_name != NULL) { free(m_name); m_name = NULL; } }private: int m_id; char *m_name;};void test(){ Teacher t1(1, "zhang3"); t1.printT(); Teacher t2(t1);//t2 拷贝构造 t2.printT();}int main(void){ test(); return 0;}第53行报错:cpp(53): error C2664: “Teacher::Teacher(const Teacher &)”: 无法将参数 2 从“const char [7]”转换为“char *”cpp(53): note: 从字符串文本转换将丢失 const 限定符(请参阅 /Zc:strictStrings) 展开
 我来答
百度网友eb6ab18
2018-04-26 · TA获得超过585个赞
知道小有建树答主
回答量:1068
采纳率:83%
帮助的人:254万
展开全部

虽然没看你的代码(太乱了),但是这个问题很显然是你对常量与变量没有理解清楚,

"zhang3"是一个字符串,字符串本身是一个常量,它没有办法“变化”,而可以推测你的Teacher类构造函数第二个参数是要接受一个字符型指针,字符型指针的本质是一个变量,它“指向一个字符串”,而它自己不是字符串,所以你传参的时候传错了类型了,才会报错,你可以这样:

char* p = "zhang3";
Teacher t1(1,p);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式