c++转换构造函数,数据类型要求为字符指针,实在不知道怎么改了。

#include<iostream>
#include<string>
using namespace std;
class student
{
private:
	char *num;
	char *name;
	char *zhuangy;
public:
	student(char *nu,char *na,char *zy)
	{
		num=new char[20];
		name=new char[20];
		zhuangy=new char[20];
		strcpy(num,nu);
		strcpy(name,na);
		strcpy(zhuangy,zy);
	}
	~student()
	{
		delete []num;
		delete []name;
		delete []zhuangy;
	}
	student(int i)
	{
		num[0]=i%1000000000+'0';num[1]=i%100000000+'0';num[2]=i%10000000+'0';
		num[3]=i%1000000+'0';num[4]=i%100000+'0';num[5]=i%10000+'0';
		num[6]=i%1000+'0';num[7]=i%100+'0';num[8]=i%10+'0';
		num[9]=i%1+'0';
		//strcpy(num,x);
		//strcpy(name,name);
		//strcpy(zhuangy,zhuangy);
	}
	student(char* y)
	{
		num=new char[strlen(y)+1];
		strcpy(num,y);

	}
	operator int()
	{
		int x;
		x=(num[0]-'0')*1000000000+(num[1]-'0')*100000000+(num[2]-'0')*10000000+
			(num[3]-'0')*1000000+(num[4]-'0')*100000+(num[5]-'0')*10000+
			(num[6]-'0')*1000+(num[7]-'0')*100+(num[8]-'0')*10+
			(num[9]-'0')*1;
		return x;
	}
	void pnum()
	{
		cout<<num<<endl;
	}
	void pname()
	{
		cout<<name<<endl;
	}
	void pzy()
	{
		cout<<zhuangy<<endl;
	}
	student &operator=(const student &);
};
student &student::operator=(const student &x)
{
	if(this==&x)return * this ;
	delete num;
	num=new char[(strlen(x.num)+1)];
	strcpy(num,x.num);
	return *this;
}
int main()
{
	student stu1("2015033114","xm","网工"),stu2("2015033115","mk","网工"),stu3("2015033116","jc","网工");
	student stu4(2014033111);
	stu1=stu3;
	/*stu2=student(2014033111);*/
	stu2=stu4;
	stu1.pnum();
	/*stu2=1111111112;*/
	stu2.pnum( );
	cout<<int(stu2)-int(stu1)<<endl;
	return 0;
}

 

既然是C++,字符串全部用string,不要用char数组了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632