gpt4 book ai didi

C++ 编译器错误 : No matching function for call

转载 作者:太空狗 更新时间:2023-10-29 23:21:23 25 4
gpt4 key购买 nike

看下面的代码。它有什么问题?编译器给出了这个错误:

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);
}

从这个问题的答案中,我到目前为止的理解是:编译器不允许将引用转换为常量引用,因为引用已经是常量。它们不能像指针那样指向不同的内存位置。我说得对吗?

最佳答案

这不是更好吗?

class person
{
private:
std::string name;
std::string fathername
std::string address;
};

// constructor and copy constructor autogenerated!

这样更像“C++”;)。

关于C++ 编译器错误 : No matching function for call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com