strcpy_s或是strcpy都尝试过,
前者报错 error C2065: 'strcpy_s' : undeclared identifier
后者报错 error C2660: 'strcpy' : function does not take 3 parameters
全程序
#include<iostream>
#include<cstring>
using namespace std;
class Name
{
public:
Name(char *pn);
Name(const Name &Obj);
~Name();
void setName(char*);
void showName();
protected:
char *pName;
int size;
};
Name::Name(char *pn)
{
cout<<"Constructibng"<<pn<<endl;
pName=new char[strlen(pn)+1];
if(pName!=0) strcpy_s(pName,strlen(pn)+1,pn);
size=strlen(pn);
}
Name::Name(const Name& Obj)
{
cout<<"Copying"<<Obj.pName<<"into its own block\n";
pName=new char[strlen(Obj.pName)+1];
if(pName!=0) strcpy_s(pName,strlen(Obj.pName)+1,Obj.pName);
size=Obj.size;
}
Name::~Name()
{
cout<<"Destructing"<<pName<<endl;
pName[0]='\0';
delete []pName;
pName=NULL;
size=0;
}
void Name::setName(char *pn)
{
delete []pName;
pName=new char[strlen(pn)+1];
if(pName!=0) strcpy_s(pName,strlen(pn)+1,pn);
size=strlen(pn);
}
void Name::showName()
{
cout<<pName<<endl;
}
int main()
{
Name Obj1("NoName");
Name Obj2=Obj1;
Obj1.showName();
Obj2.showName();
Obj1.setName("sudongpo");
Obj2.setName("dufu");
Obj1.showName();
Obj2.showName();
}
使用软件为 Visual C++ 6.0
VC6.0不支持strcpy_s,
strcpy_s(pName,strlen(pn)+1,pn);
修改为
strcpy(pName,+1,pn);
或者换vc++2010或者以上
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。