请看下面的代码。它有什么问题?编译器给出了这个错误:C++编译器错误:没有匹配的调用函数
In copy constructor
person::person(person&)': No matching function for call to
person::copy(char*&, char*&)' candidates are: void person::copy(char*&, const char*&) "
下面是代码:
class person
{
public:
person();
person(person &);
private:
void copy(char*&,const char*&);
char* name, *fathername,* address;
};
void person::copy(char*& n, const char*& p)
{
int result;
result=strcmp(n,p);
if(result!=0)
{
n=new char[strlen(p)+1];
strcpy(n,p);
n[strlen(p)]='\0';
}
}
person::person(person &object)
{
copy(name,object.name);
copy(fathername,object.fathername);
copy(address, object.address);
}
从这个问题的答案我的理解,直至现在由给出: 编译器不允许将引用转换为常量引用,因为引用已经是常量。他们不能指向像指针这样的不同内存位置。我对吗?
能否请您妥善 – 2010-01-21 19:59:08
即使它的工作缩进它,这个代码泄漏内存。为什么不简单地使用'std :: string'并避免这样的错误? – 2010-01-21 20:04:13
尊敬的先生,它不是整个代码,我只发布有问题的代码。 – 2010-01-21 20:11:04