請看下面的代碼。它有什麼問題?編譯器給出了這個錯誤: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