关于类的一个问题,小丽报错,用了const也不行

这是修改后的代码


#include<iostream>
using namespace std;
class Person
{
private:
 char name[20];
 char sex;
 int age;
 char* addr;
public:
 Person()
 {
  strcpy_s(name, "张三");
  sex = 'x';
  age = 0;
  addr = new char;
  addr[0] = '\0';   //试试能不能删
 }
 Person(char* n, int age, char sex, char* addr)
 {
  strcpy_s(this->name, strlen(n + 1), n);
  this->age = age;
  this->sex = sex;
  this->addr = new char[strlen(n) + 1];
  addr = addr;
 }
 Person(Person &p)
 {
  strcpy_s(this->name, strlen(name + 1),p.name );
  this->age = p.age;
  this->sex = p.sex;
  addr = new char[strlen(addr) + 1]; //不知是不是this->
  addr = addr;
 }
 ~Person()
 {
  delete[] addr;
 }
 void ShowMe();
};
void Person::ShowMe()
{
 cout << "姓名为:" << name << ",年龄为:" << age << ",性别为:" << sex << ",地址为:" << *addr << endl;
}
int main()
{
 Person person1;
 person1.ShowMe();
 Person person2("小丽",19,'m',"中国广东省深圳市"); 
 person2.ShowMe();
}

强制转换试了没有啊,你别把自己憋死啊

 
#include<iostream>
using namespace std;
class Person
{
private:
 char name[20];
 char sex;
 int age;
 char* addr;
public:
 Person()
 {
  strcpy_s(name, "张三");
  sex = 'x';
  age = 0;
  addr = new char[20];
  addr[0] = '\0';   //试试能不能删
 }
 Person(char* n, int age, char sex, char* addr)
 {
  strcpy_s(this->name, strlen(n)+1 , n);
  this->age = age;
  this->sex = sex;
  this->addr = new char[strlen(addr) + 1];
  strcpy_s(this->addr,strlen(addr)+1,addr);
 }
 Person(Person &p)
 {
  strcpy_s(this->name, strlen(name + 1),p.name );
  this->age = p.age;
  this->sex = p.sex;
  addr = new char[strlen(p.addr) + 1]; 
  strcpy_s(this->addr ,strlen(p.addr)+1,p.addr);
 }
 ~Person()
 {
  delete[] addr;
 }
 void ShowMe();
};
void Person::ShowMe()
{
 cout << "姓名为:" << name << ",年龄为:" << age << ",性别为:" << sex << ",地址为:" << addr << endl;
}
int main()
{
 Person person1;
 person1.ShowMe();
 Person person2((char*)"小丽",19,'m',(char*)"中国广东省深圳市"); 
 person2.ShowMe();
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^